不打開文件獲取名稱。Excel VBA Application對象GetOpenFilename方法教程
Excel 2013 VBA進階實戰教程系列
第-10.2-節 GetOpenFilename獲取文件完整名稱
工作簿文件是Excel數據存放和所有操作的基礎,今天小編excel小課堂(ID:excel-xiaoketang 長按複製)就和各位一起學習如何使用GetOpenFilename方法實現不打開工作簿文件而獲取文件完整路徑+名稱的方法,可以指定單個或多個文件哦!
01
Application.GetOpenFilename 方法
GetOpenFilename方法:顯示標準的「打開」對話框,獲取用戶文件名,而不必真正打開任何文件。本方法返回的是選定的文件名或用戶輸入的文件名。返回的名稱可能包含路徑的說明。
Expression.GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)
02
打開單個文件
本例顯示Excel文件的「打開」對話框。如果用戶選擇了一個文件名,則在消息框中顯示所選的文件名。如果沒有選中文件,則顯示「沒有選中文件」。"由於示例中MultiSelect:=False,所以fileToOpen是一個變數,其後的判斷語句必須用If fileToOpen False Then...,而不能用If IsArray(fileToOpen) Then...。因為不論是否選中了文件,fileToOpen都不是一個數組,所以用這句話不能區分是選中了文件,還是選擇了「取消」。雖然不會報錯,但達不到目的。
Sub openfile()
Sub OpenFile1()
Dim bSuccess As Boolean
MsgBox "請定位到TEMP.xlsx文件."
bSuccess = Application.FindFile
If Not bSuccess Then
MsgBox "該文件沒有打開."
End If
End Sub
03
打開多個文件
本例顯示Excel文件的「打開」對話框。如果用戶選擇了多個(至少有一個)文件名,則分別打開這些文件,並複製其第一行的內容到本工作表中。如果沒有選中文件,則顯示「沒有選中文件」。由於MultiSelect:=True,所以當用戶選中文件時fileToOpen是一個數組(數組下標總是從1開始,到Ubound(fileToOpen),即不受Option Base的影響),其後的判斷語句必須用If IsArray(fileToOpen) Then...,而不能用If fileToOpen False Then...,如果使用了後者,當用戶不選擇文件時,程序能正常運行,當用戶選擇了文件時,程序就會出錯,提示「運行時錯誤 『13』:類型不匹配」)。
Sub OpenMultiFile()
Dim fileToOpen As Variant
Dim i As Integer, name1 As String
ChDir "C:UsersxujingleDesktop資料quotationVBA視頻素材速查手冊Application對象的GetOpenFilename方法"
fileToOpen = Application.GetOpenFilename(FileFilter:="Microsoft Office Excel 文件(*.xlsx),*.xlsx,所有文件(*.*),*.*", title:="選擇文件,可以多選,按Ctrl+A可全選", MultiSelect:=True) "("Text Files(*.txt),*.txt")
If IsArray(fileToOpen) Then
For i = 1 To UBound(fileToOpen)
Workbooks.Open Filename:=fileToOpen(i) "打開第一個文件
name1 = ActiveWorkbook.Name "取得活動工作簿的名稱
Rows("1:1").Copy "複製
ThisWorkbook.Activate "激活本工作簿
Range("A" & i + 1).Activate "激活相應的行
ActiveSheet.Paste "粘貼
Application.CutCopyMode = False
Windows(name1).Close savechanges:=flase "關閉系列工作簿且不保存
Next i
Else
Debug.Print "沒有選中文件"
End If
End Sub


TAG:excel小課堂 |