VB/VBA通用路径选择对话框

这段代码展示了如何在VB或VBA中使用BROWSEINFO结构和SHBrowseForFolder函数创建一个通用的文件夹选择对话框。用户可以选择一个目录,如果选择取消,返回的路径为空。示例代码包括Main子程序用于测试对话框功能。
摘要由CSDN通过智能技术生成

'MOD2
Option Explicit
Private Type BROWSEINFO
    hOwner As Long
    pidlRoot As Long
    pDisplayName As String
    lpTitle As String
    ulFlags As Long
    lpfn As Long
    lParam As Long
    iImage As Long
End Type

Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias _
                          "SHGetPathFromIDListA" (ByVal pidl As Long, _
                          ByVal pPath As String) As Long

Private Declare Function SHBrowseForFolder Lib "shell32.dll" Alias _
                          "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) _
                          As Long

Private Const BIF_RETURNONLYFSDIRS = &H1
' *******************************************************************
' 函数名: BrowseFolder
' 功能: 浏览及选择文件夹通用对话框
' 使用方法:(1)将mdlBrowseFolder.bas模块添加到当前工程中;
' (2)在当前工程中使用
' dim strMyPath as String
' strMyPath=BrowseFolder("请选择目录")
' 代码段进行调用,用户选择的目录将保存在strPath字符串变量下;
' (3) 如果用户选择"取消"按钮,则strPath的值为空;
' *******************************************************************

Public Function BrowseFolder(strDialogTitle As String) As String
    Dim X As Long
    Dim bi As BROWSEINFO
    Dim dwIList As Long
    Dim strPath As String
    Dim wPos As Integer

    With bi
        .hOwner = 0& 'hWndAccessApp
        .lpTitle = strDialogTitle
        .ulFlags = BIF_RETURNONLYFSDIRS
    End With

    dwIList = SHBrowseForFolder(bi)
    strPath = Space$(512)
    X = SHGetPathFromIDList(ByVal dwIList, ByVal strPath)

    If X Then
        wPos = InStr(strPath, Chr$(0))
        BrowseFolder = Left$(strPath, wPos - 1)
    Else
        BrowseFolder = vbNullString
    End If

    ' 确保返回的路径字符串的最后一个字符为"\"
    If BrowseFolder <> "" And Right$(Trim$(BrowseFolder), 1) <> "\" Then
        BrowseFolder = BrowseFolder & "\"
    End If

End Function

 

' 测试示例  

Sub Main()

    Dim strMyPath As String

    strMyPath = BrowseFolder("请选择目录")

    MsgBox "你选择的路径是: " & strMyPath

End Sub

摘自:网络整理

相关参考


VB查找替代字符串的函数

VB换行气泡提示类

VB/VBA通用路径选择对话框

ASCII码表0-255完整版 附详细注释

VB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值