在32位和64位Excel 2013上使用VBA
有以下代码,我无法编译,希望有人能告诉我正确的方向 “我的代码”用于打开browseFolder,错误在在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
上。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中。