Microsoft KB Archive/110692

{|
 * width="100%"|

-

The information in this article applies to:


 * Microsoft Excel for Windows, version 5.0

-

SUMMARY
In Microsoft Excel 5.0 for Windows, you can create a macro to find the default directory of any application that registers itself in the [EXTENSIONS] section of the WIN.INI file. Given the three-character extension for the application[ASCII 146]s file, the macro below uses the Microsoft Windows dynamic-link libraries (DLLs) to return the default directory information.

MORE INFORMATION
Microsoft provides examples of Visual Basic for Applications procedures for illustration only, without warranty either expressed or implied, including, but not limited to the implied warranties of merchantability and/or fitness for a particular purpose. The Visual Basic procedures in this article are provided 'as is' and Microsoft does not guarantee that they can be used in all situations. While Microsoft support professionals can help explain the functionality of a particular macro, they will not modify these examples to provide added functionality, nor will they help you construct macros to meet your specific needs. If you have limited programming experience, you may want to consult one of the Microsoft Solution Providers. Solution Providers offer a wide range of fee-based services, including creating custom macros. For more information about Microsoft Solution Providers, call Microsoft Customer Information Service at (800) 426-9400.

NOTE: It may be possible to work around this situation by creating a macro that makes calls to the Windows application programming interface (API). This type of programming is supported by the Windows Software Development Kit (SDK) and the Visual Basic, Professional Edition, support groups. The level of support you can receive from these groups depends on the individual support policies of the group. (Microsoft support professionals may not be able to assist in specific construction of macros that use API programming.) If you have limited programming experience, you may want to consult one of the Microsoft Solution Providers. Solution Providers offer a wide range of fee-based services, including creating custom macros. For more information about Microsoft Solution Providers, call Microsoft Customer Information Service at (800) 426-9400.

Sample Macro Code
Option Explicit

'Enter the following declare statement needs as a single line.

Declare Function GetProfileString Lib "KERNEL" (ByVal lpAppName As _  String, ByVal lpKeyName As String, ByVal lpDefault As String, _   ByVal lpReturnedString As String, ByVal nSize As Integer) As Integer

Sub Application_Directory Dim Path As String * 255, Ext As String, Directory As String Dim Back_Slash As Integer, Length As Integer Ext = InputBox("Enter the 3 letter extension of the application.") 'If Cancel was chosen then end procedure If Len(Ext) = 0 Then Exit Sub 'Gets information from the WIN.INI file and stores in the "path" 'variable Length = GetProfileString("Extensions", Ext, "", Path, Len(Path)) 'Tests for no application found If InStr(Path, "\") = 0 Then MsgBox "Application not found." Else Back_Slash = 255 While Mid(Path, Back_Slash, 1) <> "\" Back_Slash = Back_Slash - 1 Wend Directory = Left(Path, Back_Slash - 1) MsgBox "The directory of the application which uses the " & _ "extension '" & Ext & "' is " & Directory & "." End If End Sub To run this macro, place the insertion point anywhere in the Sub Application_Directory line and either press F5 or choose Start from the Run menu.

When you are prompted to enter a three-letter extension, enter an extension and choose OK. The macro will use the Microsoft Windows API to determine which directory contains the application that uses that three-letter extension. For example, if you enter xls, the message box will tell you where the Microsoft Excel application is installed.

For information about creating a similar Visual Basic macro to find the default printer and port assignments, query on the following words in the Microsoft Knowledge Base: "device and port and visual and basic and printer"