繁体   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