2013-04-11 81 views
0

到这一点,可能容易解决的问题,但没有任何编程技能,其对我来说很难破解......复制工作表的每从一个excel文件到另一个

我做一个excel一个按钮文件,宏分配给它。

它应该做的:

  1. 再打开一个XLS文件,用户可以对硬盘
  2. 副本每片从打开的文件搜索
  3. 将其粘贴到原来的文件,并关闭一个是从中复制而来的。

到目前为止,我得到这个:

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 
+0

Excel 2003?你是否尝试使用宏记录器来做到这一点? – 2013-04-11 09:58:34

+1

您可以使用免费的可扩展RDBMerge插件来实现此目的。 http://stackoverflow.com/questions/15186302/merge-multiple-workbooks-from-different-folders-into-one/15188080#15188080 – Santosh 2013-04-11 10:31:23

+1

这个问题几乎每天都会在excel中看到最多的重复项之一stackoverflow。 .. – 2013-04-11 10:53:09

回答

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 

该宏对我来说工作正常!请确保您已将代码放置在正确的位置。

在下面的“第一册”的图像是原来的片的宏代码应被插入到“模块”(要复制片所述一个)(红色正方形)和任何的那些的在橙色的广场。如果您没有“模块1”(或任何其他),则需要通过查看vba编辑器顶部的“插入”菜单来插入新的模块。

enter image description here

+0

看起来不错,简单。我收到一条错误消息:对象'_Worksheet'的方法副本失败。 – Adam 2013-04-11 14:46:42

+0

ws.Copy before:= ThisWorkbook.Worksheets(1) - 这表示为问题。即使我将“ThisWorkbook”更改为运行宏的原始文件名称 – Adam 2013-04-11 14:49:13

+0

确实是这个问题..我非常感谢您的帮助。你掌握的技能很高:) – Adam 2013-04-11 15:10:33

相关问题