VBA入門只需3天 VBA中的絕對路徑與相對路徑

VBA入門只需3天 VBA中的絕對路徑與相對路徑

這是VBA入門只需3天的第2篇,第1篇講得是vba中Range的用法。點擊閱讀!

3天之後,我們將可以使用VBA進行多Sheet彙總。

今天我們需要了解的是VBA中的相對路徑和絕對路徑。

絕對路徑,顧名思義,完整的磁盤路徑就是絕對路徑。

例如這樣完整的磁盤路徑就是絕對路徑。

C:\Users\Administrator\Desktop\Merge_Sheet

而相對路徑,表示的是一個文件相對另外一個文件的位置。

大家可以參考一下每個編程語言(但是VBA卻沒有)相對路徑表示方式。

1) ./ 代表當前目錄,html中可以省略

2) ../ 代表上級目錄

3) ../../代表上上級目錄

4) ../../../ 以此類推

5) / 代表根目錄

因為VBA不支持這樣的寫法,所以我們必須用另外一種方式來表示相對路徑。

這裡用一個具體的例子再深入闡述一下絕對路徑與相對路徑。

現在有一個文件夾,層級目錄如圖所示:

VBA入門只需3天 VBA中的絕對路徑與相對路徑

現在我們需要在【test.xlsm】中使用VBA打開【重要信息.xlsx】這個excel來進行一些數據清洗的工作。

我們可以將代碼寫成這樣:

Sub test()
 Dim path As String
 path = "C:\Users\Administrator\Desktop\test\重要信息.xlsx"
 Workbooks.Open (path)
 Debug.Print "開始整理數據……"
End Sub

經過測試,我們可以順利的打開【重要信息.xlsx】這個文件。

但是假設我們需要把我們的文件發送給我們的同事,幫助我們的同事也處理一下手頭的數據。同事將文件存在了D盤,運行我們的代碼時打不開需要的EXCEL,因為這邊的路徑出現了錯誤。正確的路徑已經是:

D:\test\重要信息.xlsx

我們可以幫一個同事改一下代碼,但我們無法幫整個部門30個同事都按著路徑改成正確的代碼。所以我們極度需要,不管發給誰,不管這位同學把文件存在哪裡,我們都可以順利的整理我們的數據。

這裡我們就需要使用我們的相對路徑。

我們需要知道【重要信息.xlsx】相對於【test.xlsm】這個文件位於哪個位置。

【test.xlsm】的所處路徑為:

C:\Users\Administrator\Desktop\test

而【重要信息.xlsx】也是在test文件下的。

所以我們只需要知道【test.xlsm】的文件路徑,就可以順利的找到【重要信息.xlsx】。

這邊我們便需要:

ThisWorkbook.path

我們可以試著運行一下:

VBA入門只需3天 VBA中的絕對路徑與相對路徑

這樣不管發給誰,只要保證最大層級目錄不變,

即同在test文件夾中,我們就可以輕鬆的與他人展開協作了。

VBA入門只需3天 VBA中的絕對路徑與相對路徑

具體要這樣修改:

Sub test()
 Dim path As String
 path = ThisWorkbook.path & "" & "重要信息.xlsx"
 Workbooks.Open (path)
End Sub

這來再解釋一下其他幾句代碼的意思:

Dim path As String

這個代表聲明一個變量為字符串("XXX" → 只要是在引號裡的,都可以理解成字符串),

聲明變量需用使用Dim關鍵字。

假設如果我們想聲明一個長整型變量,我們就應該這麼寫:

Dim num As Long

而 Workbooks.Open (path),這個就是打開文件的方法了。我們需要把文件所處的位置作為參數傳遞給方法,這樣才可以順利的打開文件。

本期內容到此結束,明天將探討一下循環等知識點,然後我們就可以著手開始批量彙總sheet的工作了。


分享到:


相關文章: