• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • VBA代碼調用瀏覽文件夾對話框的幾種方法

    發表于:2007-04-28來源:作者:點擊數: 標簽:代碼VBA瀏覽文件夾對話框
    1、使用API方法 '【類型聲明】 Private Type BROWSEINFO hWndOwner As Long pID LR oot 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 Fun

    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中測試通過

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>