VBA – 检索打开的工作簿的名称
这是我的问题:
我有一个在我的主文件(让我们称之为mainFile)一个子这样做:
– 打开文件(用户select打开哪个文件)
– 在一个variables中检索这个文件的名字
– 复制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")
但variablesfileName而不是返回,例如“file1.xls”,返回“mainFile.xls”。
我想这是因为sub位于mainFile。 但是,我可以使用什么,而不是ThisWorkbook.name?
谢谢
你似乎在这里做额外的工作,你不需要。 我们可以设置一个Workbookvariables,并直接使用它,而不是通过名字来访问它。
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")
你有其他的select(这不是一个好的select,因为它可能导致奇怪和难以debugging的错误)是使用ActiveWorkbook
,其中引用显示的workbbok。 在这种情况下,这将是你刚刚打开的workbbok。
这是使用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 VBAmacros中select,以避免This...
, Active...
和Select...
语句消除这些(和其他)types的问题。