在32位和64位Excel 2013上使用VBA

在32位和64位Excel 2013上使用VBA,excel,excel-2013,Excel,Excel 2013,有以下代码,我无法编译,希望有人能告诉我正确的方向 “我的代码”用于打开browseFolder,错误在上。hOwner=hWndAccessApp Option Explicit #If VBA7 Then Private Type BROWSEINFO hOwner As LongPtr pidlRoot As LongPtr pszDisplayName As String lpszTitle As String

有以下代码,我无法编译,希望有人能告诉我正确的方向

“我的代码”用于打开browseFolder,错误在
上。hOwner=hWndAccessApp

Option Explicit

#If VBA7 Then
    Private Type BROWSEINFO
        hOwner As LongPtr
        pidlRoot As LongPtr
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As LongPtr
        lParam As LongPtr
        iImage As Long
    End Type

    Private Declare PtrSafe Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" _
        (lpBrowseInfo As BROWSEINFO) As LongPtr
    Private Declare PtrSafe Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
        (ByVal pidl As LongPtr, ByVal pszPath As String) As Boolean
#Else
    Private Type BROWSEINFO
        hOwner As Long
        pidlRoot As Long
        pszDisplayName As String
        lpszTitle As String
        ulFlags As Long
        lpfn As Long
        lParam As Long
        iImage As Long
    End Type

    Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias "SHBrowseForFolderA" _
        (lpBrowseInfo As BROWSEINFO) As Long
    Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
        (ByVal pidl As Long, ByVal pszPath As String) As Boolean
#End If

Private Const BIF_RETURNONLYFSDIRS = &H1

Public Function BrowseFolder(Optional 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

hWndAccessApp未在任何位置定义。如果打开了Option Explicit,它将无法编译。谢谢你,我希望在64位系统上测试它后,我能做到这一点。
hWndAccessApp
在Access对象库中,而不是Excel中。hWndAccessApp在任何地方都没有定义。如果打开了Option Explicit,它将无法编译。谢谢你,我希望在64位系统上测试它后,我能做到这一点。
hWndAccessApp
在Access对象库中,而不是Excel中。