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