2009-12-13 86 views
19

說,我在我的excel文件sample.xls中寫了一個VBA。現在我想在我的VBA中獲得完整路徑sample.xls。我該怎麼做?如何獲得VBA中的excel文件名/路徑

+1

當你說* sample.xls裏面的VBScript *,你的意思是VBA,它是Excel本地的? – Fionnuala 2009-12-13 09:52:18

+0

@Remou 是的,它是VBA。 – Veera 2009-12-15 11:12:16

+1

您可能想更正標題和標籤嗎? – Oorang 2009-12-15 16:11:24

回答

23

如果你的意思是VBA,那麼你可以使用全名,例如:

strFileFullName = ActiveWorkbook.FullName 
+11

當然你的意思是ThisWorkbook.FullName? ;) – Oorang 2009-12-15 16:10:23

+4

不一定。 – Fionnuala 2009-12-15 16:36:45

+13

Oorang的評論是正確的:'ThisWorkbook.FullName'將是正確和安全的電話。 Veera的問題指出:「我在* excel文件sample.xls中編寫VBA *,現在我想在我的VBA中獲得sample.xls的完整路徑。」 (強調添加。)在這種情況下,使用'ThisWorkbook.FullName'是保證是正確的,而'ActiveWorkbook.FullName'可能會給出一個瘋狂錯誤的答案,如果「sample.xls」目前不是活動工作簿。 – 2010-01-12 16:30:14

7
strScriptFullname = WScript.ScriptFullName 
    strScriptPath = Left(strScriptFullname, InStrRev(strScriptFullname,"\")) 
+3

op說*裏面* sample.xls,這讓我懷疑VBScript。我懷疑VBA。 – Fionnuala 2009-12-13 09:53:22

0

ActiveWorkbook.FullName將是我最好三思,如果你有VBA宏存儲在另一個Excel工作簿,但是您想獲取正在編輯的Excel的詳細信息,而不是宏所在的位置。

如果它們駐留在同一個文件中,那麼它並不重要,但是如果它們在不同的文件中,並且您希望文件位於Data而不是Macro所在的位置,那麼ActiveWorkbook是您需要的文件,因爲它處理兩種情況。

2

這是一個簡單的選擇,它提供所有響應,全名,路徑,文件名。

Dim FilePath, FileOnly, PathOnly As String 

FilePath = ThisWorkbook.FullName 
FileOnly = ThisWorkbook.Name 
PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly)) 
+0

Insul of'PathOnly = Left(FilePath,Len(FilePath) - Len(FileOnly))''你可以寫:'PathOnly = ThisWorkbook.Path' – EBH 2017-05-11 18:49:20