【问题标题】:VBA Copy / paste values from one workbook to anotherVBA 将值从一个工作簿复制/粘贴到另一个工作簿
【发布时间】:2017-09-08 12:34:22
【问题描述】:

我有两个工作簿,第一个称为 classeur1,第二个称为 classeur2。

我无法将表格中的合并行从 Sheet1(来自 Workbook1)复制/粘贴到 Sheet2(来自 Workbook2)。

我想知道怎么做。

事实上我试过但没有结果。这是我的代码:

Sub test()
    Dim finalrow As Long
    Workbooks("workbook1").Worksheets("sheet1").Range("D1:D" & finalrow).Value = Workbooks("workbook2").Worksheets("sheet2").Range("A2:A" & finalrow).Value
End Sub

【问题讨论】:

  • 您遇到的问题不是完全限定的工作簿名称/路径。当您提供的信息太少时,编译器不知道如何区分工作簿。检查几天前我的这个答案 - 它详细说明了如何使用多个工作簿。 stackoverflow.com/questions/43287385/…

标签: excel vba


【解决方案1】:

您的一个范围从 D1 开始,另一个从 A2 开始,但都进入 finalRow。这使它们具有不同的尺寸范围。我假设您实际上已经为 finalRow 分配了一个行号,但我不会使用它。

Option Explicit

Sub test()
    With Workbooks("Classeur2").Worksheets("Feuil2")
        With .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp))
            Workbooks("Classeur1").Worksheets("Feuil1").Range("D1").Resize(.Rows.Count, .Columns.Count) = .Value
        End With
    End With
End Sub

【讨论】:

    【解决方案2】:

    您可以尝试通过选择范围和插入 -> 表格 -> 表格来定义表格的名称。假设名称是“Table1”

    Option Explicit
    
    Sub CopyTable()
    'Select the defined Table1 from classeur1 workbook and copy it to classeur2 starting at cell D1
    
    Workbooks("classeur1").Worksheets("Sheet1").Range("Table1[#All]").Copy _ 
        Workbooks("classeur2").Worksheets("Sheet1").Range("D1")
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2014-12-09
      • 2023-03-06
      相关资源
      最近更新 更多