See
http://www.mvps.org/access/api/api0002.htm at "The Access Web" for the
complete code.
--
Doug Steele, Microsoft Access MVP
http://I.Am/DougSteele
(no e-mails, please!)
"Norman Scheinin" <norman.b.scheinin@boeing.com> wrote in message
news:422376E4.E1D58EA0@boeing.com...[color=blue]
> "bi As BROWSEINFO" produced a compile error. What library does this
> reference?
>
> DFS wrote:[color=green]
>>
>> deko wrote:[color=darkred]
>> >>> I immediately ran into a problem with the Common Dialog with Access
>> >>> 2000... will repost...
>> >>
>> >> Never use it (or any other ActiveX controls). More likely a
>> >> difference between two PCs than having anything to do with the
>> >> Access version.
>> >
>> > I think that's the issue - I was using ActiveX to get the dialog with
>> > Access 2003, now I need another way. I found some code on
>> > Microsoft's site to get a file picker, but still need code for a
>> > folder picker. If you have code for a folder picker, that would be a
>> > big help.[/color]
>>
>> Try this:
>>
>> Public Function BrowseFolder(szDialogTitle As String) As String
>>
>> Dim X As Long, bi As BROWSEINFO, dwIList As Long
>> Dim szPath As String, wPos As Integer
>>
>> With bi
>> .hOwner = hWndAccessApp
>> .lpszTitle = szDialogTitle
>> .ulFlags = BIF_RETURNONLYFSDIRS
>> End With
>>
>> dwIList = SHBrowseForFolder(bi)
>> szPath = Space$(512)
>> X = SHGetPathFromIDList(ByVal dwIList, ByVal szPath)
>>
>> If X Then
>> wPos = InStr(szPath, Chr(0))
>> BrowseFolder = Left$(szPath, wPos - 1)
>> Else
>> BrowseFolder = vbNullString
>> End If
>>
>> End Function
>>
>> Call it like this:
>>
>> Dim strFolderName As String
>> strFolderName = BrowseFolder("whatever message you want")
>>[color=darkred]
>> > Here's what I've got for the file picker dialog:
>> >
>> > Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
>> > "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
>> >
>> > Private Type OPENFILENAME
>> > lStructSize As Long
>> > hwndOwner As Long
>> > hInstance As Long
>> > lpstrFilter As String
>> > lpstrCustomFilter As String
>> > nMaxCustFilter As Long
>> > nFilterIndex As Long
>> > lpstrFile As String
>> > nMaxFile As Long
>> > lpstrFileTitle As String
>> > nMaxFileTitle As Long
>> > lpstrInitialDir As String
>> > lpstrTitle As String
>> > flags As Long
>> > nFileOffset As Integer
>> > nFileExtension As Integer
>> > lpstrDefExt As String
>> > lCustData As Long
>> > lpfnHook As Long
>> > lpTemplateName As String
>> > End Type
>> >
>> > Private Function LaunchCD(strForm As Form, strSelect As String) As
>> > String Dim OpenFile As OPENFILENAME
>> > Dim lReturn As Long
>> > Dim sFilter As String
>> > OpenFile.lStructSize = Len(OpenFile)
>> > OpenFile.hwndOwner = strForm.hWnd
>> > sFilter = "Excel Workbooks (*.xls)" & Chr(0) & "*.xls" & Chr(0)
>> > OpenFile.lpstrFilter = sFilter
>> > OpenFile.nFilterIndex = 1
>> > OpenFile.lpstrFile = String(257, 0)
>> > OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
>> > OpenFile.lpstrFileTitle = OpenFile.lpstrFile
>> > OpenFile.nMaxFileTitle = OpenFile.nMaxFile
>> > OpenFile.lpstrInitialDir = "C:\"
>> > OpenFile.lpstrTitle = strSelect
>> > OpenFile.flags = 0
>> > lReturn = GetOpenFileName(OpenFile)
>> > If lReturn <> 0 Then
>> > LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1,
>> > OpenFile.lpstrFile, vbNullChar) - 1))
>> > End If
>> > End Function[/color][/color][/color]