vba使用win32 API(GetOpenFileName )实现打开文件对话框

 
使用网上比较普遍的vb中使用WindowsAPI实现打开文件对话框代码,

Declare 
Function  GetOpenFileName Lib  " comdlg32.dll "  Alias _
        
" GetOpenFileNameA "  (pOpenfilename  As  OPENFILENAME)  As   Long
 
Type OPENFILENAME
     lStructSize 
As   Long
     hwndOwner 
As   Long
     hInstance 
As   Long
     lpstrFilter 
As   String
     lpstrCustomFilter 
As   String
     nMaxCustFilter 
As   Long
     nFilterIndex 
As   Long
     lpstrFile 
As   String
     nMaxFile 
As   Long
     lpstrFileTitle 
As   String
     nMaxFileTitle 
As   Long
     lpstrInitialDir 
As   String
     lpstrTitle 
As   String
     flags 
As   Long
     nFileOffset 
As   Integer
     nFileExtension 
As   Integer
     lpstrDefExt 
As   String
     lCustData 
As   Long
     lpfnHook 
As   Long
     lpTemplateName 
As   String
End  Type 

调用代码

Sub  t()
    
Dim  ofn  As  OPENFILENAME
    
Dim  rtn  As   String

    ofn.lStructSize 
=   Len (ofn)
    ofn.hwndOwner 
=  Application.hWnd
    
' ofn.hInstance = Application.hInstance
    ofn.lpstrFilter  =   " XML Files (*.xml) "   &   Chr ( 0 &   " *.xml "   &   Chr ( 0 )
    ofn.lpstrFile 
=   Space ( 254 )
    ofn.nMaxFile 
=   255
    ofn.lpstrFileTitle 
=   Space ( 254 )
    ofn.nMaxFileTitle 
=   255
    ofn.lpstrInitialDir 
=   " C: "
    ofn.lpstrTitle 
=   " 打开文件 "
    ofn.flags 
=   6148

    rtn 
=  GetOpenFileName(ofn)

    
If  rtn  >=   1   Then
        
MsgBox  ofn.lpstrFile
    
Else
        
MsgBox   " Cancel Was Pressed "
    
End   If

End Sub





你可能感兴趣的:(vba使用win32 API(GetOpenFileName )实现打开文件对话框)