簡體   English   中英

VBA-檢索打開的工作簿的名稱

[英]VBA - retrieve the name of an opened workbook

這是我的問題:

我在主文件中有一個子代(我們稱其為mainFile):

-打開文件(用戶選擇要打開的文件)

-在變量中檢索此文件的名稱

-復制file1中幾個單元格的值,並將其粘貼到mainFile中

為了做到這一點,我的代碼看起來像這樣:

Workbooks.Open file1
fileName = ThisWorkbook.Name
Set source = Workbooks(fileName).Sheets("Feuil1")
Set target = Workbooks(mainFile).Sheets("Feuil1")
source.Range("A5:A66").Copy target.Range("T5")

但是變量fileName返回“ mainFile.xls”,而不是返回例如“ file1.xls”。

我猜這是因為子目錄位於mainFile中。 但是,我可以用什么代替ThisWorkbook.name呢?

謝謝

您似乎在這里做了不需要的額外工作。 我們可以設置一個Workbook變量,然后直接使用它,而不用按名稱訪問它。

Dim wkbk as Workbook

Set wkbk = Workbooks.Open(file1)
Set source = wkbk.Sheets("Feuil1")
Set target = ThisWorkbook.Sheets("Feuil1")
source.Range("A5:A66").Copy target.Range("T5")

您擁有的另一個選項(這不是一個好選擇,因為它可能導致奇怪的錯誤和難以調試的錯誤)是使用ActiveWorkbook ,它引用顯示的工作簿。 在這種情況下,這就是您剛打開的工作簿。

這是使用This...的問題之一This...

嘗試以下代碼,而不是:

Dim NewWB as workbook

Set NewWB = Workbooks.Open file1
fileName = NewWB.Name
Set source = Workbooks(fileName).Sheets("Feuil1")
Set target = Workbooks(mainFile).Sheets("Feuil1")
source.Range("A5:A66").Copy target.Range("T5")

閱讀有關如何避免在Excel VBA宏中使用“選擇 ”的技巧,以避免“ This... ,“ Active...和“ Select...語句消除這些(和其他)類型的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM