VBA/Excel/Access/Word/File Path/GetOpenFilename
Содержание
Application.GetOpenFilename
<source lang="vb">
Sub ManyFiles()
Dim x As Variant x = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*), *.xls*",Title:="Choose Files", MultiSelect:=True) On Error Resume Next If x = "False" Then Exit Sub On Error GoTo 0 For i = 1 To UBound(x) MsgBox "You selected " & x(i) Next i
End Sub
</source>
Get the selected file name in a file open dialog
<source lang="vb">
Sub GetImportFileName()
Filt = "Text Files (*.txt),*.txt," & _ "Lotus Files (*.prn),*.prn," & _ "Comma Separated Files (*.csv),*.csv," & _ "ASCII Files (*.asc),*.asc," & _ "All Files (*.*),*.*" FilterIndex = 5 Filename = Application.GetOpenFilename (FileFilter:=Filt, FilterIndex:=FilterIndex, Title:="Select a File to Import") If Filename = False Then MsgBox "No file was selected." Exit Sub End If Debug.Print Filename
End Sub
</source>
Load excel file
<source lang="vb">
Sub LoadExcelFile()
Dim result result = Application.GetOpenFilename("Excel files,*.xl?", 1) If result = False Then Exit Sub Workbooks.Open result
End Sub
</source>
Selecting multiple files
<source lang="vb"> Sub GetImportFileName2() Dim FileNames As Variant Dim Msg As String Dim I As Integer FileNames = Application.GetOpenFilename(MultiSelect:=True) If IsArray(FileNames) Then Msg = "You selected:" & vbNewLine For I = LBound(FileNames) To UBound(FileNames) Msg = Msg & FileNames(i) & vbNewLine Next i MsgBox Msg Else MsgBox "No files were selected." End If End Sub </source>
Use filter in Open file dialog
<source lang="vb">
Sub GetImportFileName2()
Filt = "Text Files (*.txt),*.txt," & "Lotus Files (*.prn),*.prn," & "Comma Separated Files (*.csv),*.csv," & "ASCII Files (*.asc),*.asc," & "All Files (*.*),*.*" FilterIndex = 5 Filename = Application.GetOpenFilename (FileFilter:=Filt, FilterIndex:=FilterIndex, Title:="Select a File to Import",MultiSelect:=True) If Not IsArray(Filename) Then MsgBox "No file was selected." Exit Sub End If For i = LBound(Filename) To UBound(Filename) Debug.Print Filename(i) Next i
End Sub
</source>