2013-04-11 83 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

相關問題