【问题标题】:Copy Cell contents between different Workbooks在不同工作簿之间复制单元格内容
【发布时间】:2016-06-05 11:27:10
【问题描述】:

场景:Workbook2.xlsx、Workbook1.xlsx 和 VBA 编辑器已打开。 Workbook1.xlsx 和 Workbook2.xlsx 也是 VBA 项目,每个项目都有一个名为 Sheet1(Sheet1) 的活动工作表对象。 在 Workbook2 中单击 CommandButton5 时,我想将 Workbook1 中的单元格 A1 到 D10 移动到 Workbook2 的 A1 到 D10。
当我在调试模式下将鼠标移到“Set Move = ...”上时,它会显示 Move = Nothing。

Private Sub CommandButton5_Click()
  Dim Move As Range
  Set Move = Workbooks(Workbook1).Worksheets(1).Range(Cells(1,1), Cells(4,10))
  Move.Select
  Selection.Copy
  Workbooks(Workbook2).Worksheets(1).Range(Cells(1,1), Cells(4,10)).Select
  ActiveSheet.Paste
End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您需要在工作簿名称周围使用引号。 此外,为了使用工作簿(选择范围并进行复制和粘贴),您明确需要激活工作簿。

    Private Sub CommandButton5_Click()
      Dim Book As Workbook
    
      ' Get Workbook 1 and activate it   
      Set Book = Workbooks("Workbook1")
      Book.Activate
    
      Dim Move As Range
      Set Move = Book.Worksheets(1).Range(Cells(1, 1), Cells(4, 10))
      Move.Select
      Selection.Copy
    
      ' Get Workbook 2 and activate it   
      Set Book = Workbooks("Workbook2")
      Book.Activate
    
      Set Move = Book.Worksheets(1).Range(Cells(1, 1), Cells(4, 10))
      Book.Worksheets(1).Range(Cells(1, 1), Cells(4, 10)).Select
      ActiveSheet.Paste
    
    End Sub
    

    另请注意,为了使用多个工作簿,它们必须都在同一个 Excel 实例中打开(即在同一个 Excel 进程中运行)。如果您在不同的 Excel 进程中打开了多个工作簿,则无法从同一个宏中访问它们。


    这是一个不需要使用剪贴板的变体:

    Sub CommandButton5_Click()
    
      Dim Source As Range
      Workbooks("Workbook1").Activate
      Set Source = Workbooks("Workbook1").Worksheets(1).Range(Cells(1, 1), Cells(4, 10))
    
      Dim Target As Range
      Workbooks("Workbook2").Activate
      Set Target = Workbooks("Workbook2").Worksheets(1).Range(Cells(1, 1), Cells(4, 10))
    
      Target.Value = Source.Value
    End Sub
    

    【讨论】:

    • 谢谢。它说运行时错误 1004。范围类的选择方法失败并指向“Move.select”
    • 你说得对,所有工作簿都必须在同一个 excel 实例中打开,但 Excel 2013/2016 实例并不要求其工作簿共享同一个窗口,即使它们都在同一个 Excel 实例下。
    • @ThunderFrame 感谢您的提示。我已经更正了我的文字。到目前为止,我只在 2010 年之前使用过 Office。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多