我想创建一个从一个spresdsheet到另一个spresdsheet的简单导入

时间:2016-06-30 16:20:30

标签: excel excel-vba vba

我想创建一个从一个电子表格到另一个电子表格的简单导入,也可以更新数据,反之亦然。从sheet2复制和更新值到sheet1时,需要列到列的映射。可以用VB脚本/宏执行此操作。我尝试了以下内容进行复制,但一直收到此错误Subscript out of range

Private Sub Import_Click()

'Assign variable name to Target workbook
    Var1 = "C:\ST Test\AAA.xlsm"
    Var1S = "Status Report"
    Var1R = "$A$3:$A$65536"
    'Assign variable name to Target range

    'Assign variable name to Source workbook
    Var2 = "C:\ST Test\BBB.xlsx"
    Var2S = "WORKPLAN"
    Var2R = "$A$8:$A$65536"

    'Open Source WorkBook
    Application.Workbooks.Open ("C:\ST Test\BBB.xlsx")


    'Copy from Source to Target
    Workbooks(Var2).Sheets(Var2S).Range(Var2R).EntireColumn.Copy _
    Destination:=Workbooks(Var1).Sheets(Var1S).Range(Var1R)

    'Close Source WorkBook wo/Save
    Workbooks(Var2).Close False
End Sub

1 个答案:

答案 0 :(得分:0)

当使用EntireColumn时,这将根据您的选择位置选择一列。因此,如果您要的是不是整个列的范围,只需使用Range(x)。选择/复制目的地:=工作簿(y)。范围(q)

查看这样的操作的另一种方法是简单地将范围设置为彼此相同,这样可以通过不使用剪贴板来节省时间。

查看此代码: 工作簿(" test1.xlsx&#34)。工作表("工作表Sheet&#34)激活。 工作簿(" test1.xlsx")。工作表(" Sheet1")。范​​围(" A1:A5")。值=工作簿("测试。 。XLSX&#34)工作表("工作表Sheet")范围(" A1:A5")值