VBA 中取得路徑的屬性多達 6 種,用途各異。搞清差異,避免路徑錯誤導致檔案存取失敗。
| 屬性 | 回傳內容 | 範例 | 用途 |
|---|---|---|---|
Application.Path |
Excel 應用程式安裝完整路徑 | C:\Program Files\Microsoft Office\Office14 |
尋找 Excel 執行檔、增益集路徑 |
ThisWorkbook.Path |
包含巨集碼之活頁簿所在資料夾 | D:\Projects\Report |
**最常用** 存取同資料夾下的資料檔、樣板 |
Application.DefaultFilePath |
使用者預設儲存資料夾(可在選項中變更) | C:\Users\Name\Documents |
「另存新檔」預設位置 |
Application.ActiveWorkbook.Path |
目前作用中活頁簿所在資料夾 | D:\Projects\Report |
操作目前開啟檔案的同目錄資源 |
Application.ActiveWorkbook.FullName |
目前作用中活頁簿完整路徑含檔名 | D:\Projects\Report\Budget.xlsx |
需完整檔案路徑時(如附件寄送、外部參考) |
Application.ActiveWorkbook.Name |
目前作用中活頁簿檔名(含副檔名) | Budget.xlsx |
顯示檔名、記錄日誌、比對檔名 |
Sub TestPaths()
MsgBox "Application.Path: " & Application.Path
MsgBox "ThisWorkbook.Path: " & ThisWorkbook.Path
MsgBox "DefaultFilePath: " & Application.DefaultFilePath
MsgBox "ActiveWorkbook.Path: " & Application.ActiveWorkbook.Path
MsgBox "ActiveWorkbook.FullName: " & Application.ActiveWorkbook.FullName
MsgBox "ActiveWorkbook.Name: " & Application.ActiveWorkbook.Name
' 同時寫入工作表 A1:A6 供查閱
With ActiveSheet
.Cells(1, 1).Value = Application.Path
.Cells(2, 1).Value = ThisWorkbook.Path
.Cells(3, 1).Value = Application.DefaultFilePath
.Cells(4, 1).Value = Application.ActiveWorkbook.Path
.Cells(5, 1).Value = Application.ActiveWorkbook.FullName
.Cells(6, 1).Value = Application.ActiveWorkbook.Name
End With
End Sub
If Dir(ThisWorkbook.Path & "\Data\Import.csv") <> "" Then
' 檔案存在,執行匯入
Else
MsgBox "找不到匯入檔案!"
End If
程式碼示範遞迴搜尋所有 .xls 檔案並修改內容,現代建議改用 FileSystemObject 或 Power Query。