我正在尝试创建一个宏,该宏将打开一个文件,并将该文件中的数据复制并粘贴到新的Excel工作表中。
问题是,该文件每月更新一次。因此,我有一张关于excel的工作表,在该工作表中我已复制粘贴了该文件的路径(指令及其在A2单元格中)。我想知道如何调整代码以打开该文件,复制其数据并关闭该文件。我还想创建一个可以按下以运行宏的按钮。
到目前为止,这是我的代码:
Sub ImportData_Click()
'open the source workbook and select the source sheet
Workbooks.Open Filename:="'Instructions!'$A$2" 'this is the part of the
code that I'm having trouble with
Sheets("ABC").Select
' copy the source range
Sheets("ABC").Range("C:AI").Select
Selection.Copy
' select current workbook and paste the values
ThisWorkbook.Activate
Sheets("ABC DUMP").Select
Sheets("ABC DUMP").Range("A:").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'close the source workbook
Windows("'Instructions!'$A$2").Activate
ActiveWorkbook.Close
End Sub
答案 0 :(得分:1)
如果将变量定义为字符串,然后将其设置为等于文件名(“指令!” $ A $ 2),则可以在workbooks.open函数中使用此变量。
您的workbooks.open函数也需要此工作簿的路径名;因此,请为您的路径名定义另一个变量,您应该可以使用:
Workbooks.Open文件名:=路径名和文件名
答案 1 :(得分:1)
您有一些小语法错误。使用 A2 这样的数据:
C:\TestFolder\ABC.xls
这似乎很好用:
Sub ImportData_Click()
'open the source workbook and select the source
Dim wb As Workbook
Workbooks.Open Filename:=Sheets("Instructions").Range("$A$2").Value
Set wb = ActiveWorkbook
Sheets("ABC").Select
' copy the source range
Sheets("ABC").Range("C:AI").Select
Selection.Copy
' select current workbook and paste the values
ThisWorkbook.Activate
Sheets("ABC DUMP").Select
Sheets("ABC DUMP").Range("A1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'close the source workbook
wb.Close
End Sub
可以重新编码以避免Select