创建用于复制和粘贴数据的宏

时间:2018-10-04 14:20:41

标签: excel vba excel-vba copy-paste

我正在尝试创建一个宏,该宏将打开一个文件,并将该文件中的数据复制并粘贴到新的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

2 个答案:

答案 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