这是我的问题:
我的主文件中有一个sub(让我们称之为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,而不是返回,例如" file1.xls",返回" mainFile.xls"。
我想这是因为sub位于mainFile中。但我可以使用什么代替ThisWorkbook.name?
由于
答案 0 :(得分:2)
你似乎在这里做了额外的工作,你不需要。我们可以设置一个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
,它引用显示的workbbok。在这种情况下,那就是你刚刚打开的工作台。
答案 1 :(得分:1)
使用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")
阅读How to avoid using Select in Excel VBA macros,了解有关避免This...
,Active...
和Select...
语句以消除这些(及其他)类型问题的提示。