VBA 浏览文件夹对话框调用的几种方法

所属分类: 脚本专栏 / VBA 阅读数: 560
收藏 0 赞 0 分享
1、使用API方法 
复制代码 代码如下:

'【类型声明】
Private Type BROWSEINFO
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
'【API声明】
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Private Declare Function lstrcat Lib "kernel32" _
Alias "lstrcatA" (ByVal lpString1 As String, _
ByVal lpString2 As String) As Long
Private Declare Function OleInitialize Lib "ole32.dll" _
(lp As Any) As Long
Private Declare Sub OleUninitialize Lib "ole32" ()
Private Const BIF_USENEWUI = &H40
Private Const MAX_PATH = 260
'【自定义函数】
Public Function GetFolder_API(sTitle As String, Optional vFlags As Variant) As String
Dim lpIDList As Long
Dim sBuffer As String
Dim BInfo As BROWSEINFO
If IsMissing(vFlags) Then vFlags = BIF_USENEWUI
Call OleInitialize(ByVal 0&)
With BInfo
.lpszTitle = lstrcat(sTitle, "")
.ulFlags = vFlags
End With
lpIDList = SHBrowseForFolder(BInfo)
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
If sBuffer <> "" Then GetFolder_API = sBuffer
End If
Call OleUninitialize
End Function
'【使用方法】
Sub Test()
MsgBox GetFolder_API("选择文件夹")
End Sub

2、使用Shell.Application方法
复制代码 代码如下:

Sub GetFloder_Shell()
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.BrowseForFolder(0, "选择文件夹", 0, 0)
If Not objFolder Is Nothing Then
MsgBox objFolder.self.path
End If
Set objFolder = Nothing
Set objShell = Nothing
End Sub

3、使用FileDialog方法
复制代码 代码如下:

Sub GetFloder_FileDialog()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
If fd.Show = -1 Then MsgBox fd.SelectedItems(1)
Set fd = Nothing
End Sub

以上方法在WINXP+OFFICE2003中测试通过
更多精彩内容其他人还在看

excel vba 限制工作表的滚动区域代码

如果希望限制工作表中滚动的区域,可以通过设置WorkSheet对象的ScrollArea属性来实现。
收藏 0 赞 0 分享

excel vba 高亮显示当前行代码

用条件格式设置高亮显示当前行,难的是如何确定当前行。用VBA就很简单,鼠标右击工作表标签,选择“查看代码”,将下面的代码粘贴到VBE窗口中
收藏 0 赞 0 分享

当编辑框内容改变 对应的单元格也随着改变vba代码

当编辑框内容改变 对应的单元格也随着改变vba代码
收藏 0 赞 0 分享

VBA 浏览文件夹对话框调用的几种方法

VBA 浏览文件夹对话框调用实现代码。大家可以根据需要选择。
收藏 0 赞 0 分享

向数据报表添加一个合计字段

在数据环境设计器中也可以创建一个合计字段,即对来自部分的数据进行合计的字段。
收藏 0 赞 0 分享

UserAccessList 集合的功能(VBA)

可用 ProtectedRange 对象的 Users 属性返回一个 UserAccessList 集合。
收藏 0 赞 0 分享

VBA UsedObjects 集合用法

可用 Application 对象的 UsedObjects 属性返回一个 UsedObjects 对象。
收藏 0 赞 0 分享

vba 获取PPT幻灯片中的所有标题的代码

有时候需要获取PPT幻灯片中的所有标题,如果手工的复制肯定很慢,那么可以用vba批量获取,提高工作效率。
收藏 0 赞 0 分享

VBA解决Windows空当接龙的617局

本文给大家分享的是使用VBA解决Windows空当接龙的617局的方法和思路,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

VBA将excel数据表生成JSON文件

本文给大家汇总介绍了几种使用VBA处理EXCEL并生成JSON文件的方法和思路,非常的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享
查看更多