Stuart McLachlan
stuart.mclachlan at gmail.com
Sun Aug 16 17:02:08 CDT 2009
On 16 Aug 2009 at 14:26, Rocky Smolin wrote: > I could get around even that possibility by changing gstrBackEndPath to > gstrFrontEndPath - another handy global I keep around for just such > application. I'll have to ask the user what they prefer. User's in Bahrain, > BTW - another 'remote' location. > > Rocky Depending on whether or not they need to keep the file afterwards, other possibilities are to write the file into the users "Documents", "Desktop" or "Temp" directory - or even the users "AppData". Here's some useful functions if you want to go down that track. Desktop() is a sample. You can create similar functions for the other locations by substituting the appropriate CSIDL_xxx in the function. Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _ (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Private Declare Function SHGetSpecialFolderLocation _ Lib "shell32" (ByVal hwnd As Long, _ ByVal nFolder As Long, ppidl As Long) As Long Private Declare Function SHGetPathFromIDList _ Lib "shell32" Alias "SHGetPathFromIDListA" _ (ByVal Pidl As Long, ByVal pszPath As String) As Long Private Declare Sub CoTaskMemFree Lib "ole32" (ByVal pvoid As Long) Const MAX_PATH = 260 Const NOERROR = 0 Const CSIDL_DESKTOPDIRECTORY = &H0010 Const CSIDL_PERSONAL = &H0005 'Documents Directory Const %CSIDL_APPDATA = &H001a '<user name>\Application Data Public Function TempDir() As String Dim strPath As String strPath = Space(MAX_PATH) GetTempPath Len(strPath), strPath TempDir = Left(strPath, InStr(1, strPath, vbNullChar) - 1) End Function Public Function Desktop() As String Dim lngPidlFound As Long Dim lngFolderFound As Long Dim lngPidl As Long Dim strPath As String strPath = Space(MAX_PATH) lngPidlFound = SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, lngPidl) If lngPidlFound = NOERROR Then lngFolderFound = SHGetPathFromIDList(lngPidl, strPath) If lngFolderFound Then Desktop = Left$(strPath, _ InStr(1, strPath, vbNullChar) - 1) & "\" End If End If CoTaskMemFree lngPidl End Function