将每个工作表从一个excel文件复制到另一个

时间:2013-04-11 09:49:56

标签: excel vba excel-vba file-io copy-paste

有了这个,可能很容易解决问题,但没有任何编程技能,我很难破解......

我用一个按钮,一个分配给它的宏制作了一个excel文件。

应该做什么:

  1. 打开另一个xls文件,用户可以在其上搜索硬盘
  2. 从打开的文件中复制每张纸
  3. 将其粘贴到原始文件并关闭从中复制的文件。
  4. 到目前为止,我得到了这个:

    Sub Importfile()
    
    Dim sFile As String
    Dim wb As Workbook
    
    sFile = Application.GetOpenFilename("*.xls,*.xls")
    
    If sFile <> "False" Then
        Set wb = Workbooks.Open(sFile)
    
    
        'Copy and paste code , where I dont know what to do
    
    
    
    
        wb.Close
    End If
    
    End Sub
    

1 个答案:

答案 0 :(得分:2)

您的示例代码是正确的,查看录制的宏代码应该已经向您展示了如何使用worksheet.copy方法。使用它,您只需循环遍历新打开的工作簿中的所有工作表,并将它们复制到原始工作簿。

我使用了For Each,您也可以使用普通的For或任何其他类型的循环。

Sub Importfile()

Dim sFile As String
Dim wb As Workbook
Dim ws As Worksheet

sFile = Application.GetOpenFilename("*.xls,*.xls")

If sFile <> "False" Then
    Set wb = Workbooks.Open(sFile)

    For Each ws In wb.Worksheets
        ws.Copy before:=ThisWorkbook.Worksheets(1)
    Next ws

    wb.Close
End If

End Sub

宏对我来说很好用!请确保您已将代码放在正确的位置。

在下面的图像中,“Book1”是您的原始工作表(您正在复制工作表),宏代码应插入“模块”(红色方块)和不是橙色方块中的任何一个。如果您没有“模块1”(或任何其他),则需要通过查看vba编辑器顶部的“插入”菜单插入一个新模块。

enter image description here