[英]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.