首页 文章

Excel VBA将工作表复制到未打开的工作簿中的现有工作表

提问于
浏览
0

VBA新手在这里 .

我记录了包含的代码,以从源工作簿中复制工作表并将其粘贴到另一个打开的工作簿的工作表中 .

它有效,但我试图做的是;触发宏复制工作表打开目标工作簿粘贴数据关闭原始工作簿结束目标工作簿但不同的工作表 .

Sub Button5_Click()
'export data to template
Sheets("DataSet").Select 'sheet that I want to copy and paste (resides in macro workbook)
Cells.Select
Selection.Copy
Windows("Missing Data Template (concept1).xlsx").Activate 'destination workbook (no macros)
Sheets("Report").Select 'destination worksheet
Cells.Select
ActiveSheet.Paste

End Sub

谢谢你的一些教育!

1 回答

  • 0

    我相信你必须打开其他工作簿,粘贴,然后关闭:

    Sub Button5_Click()
    
        'a variable to hold our other workbook
        Dim otherwb as Workbook
    
        'open other workbook assign it to variable
        Set otherwb = Application.Workbooks.Open("Missing Data Template (concept1).xlsx")
    
        'Copypasta
        Sheets("DataSet").Cells.Copy Destination:=otherwb.Sheets("Report").Range("A1")
    
        'save and Close other workbook         
        otherwb.Close(true)   
    
    End Sub
    

    你'll notice, too, that I'已经废除了所有 .Select.Active 类型的代码 . 因为选择是人类所做的事情,所以在VBA中真的没有必要使用 .Select . 代码只需知道要获取什么以及放在何处 . 触摸 .select.activate 实际上有时仅在末尾用于将光标/选择设置在运行代码的人的特定点(例如,如果你想确保一旦运行,表格("Dataset").Range ("A1")细胞被选中 .

相关问题