2014-10-19 282 views
5

我是Visual Basic的新手。我可以使用Excel 2010或Excel 2013來執行此任務。將多個Excel工作簿合併到一個工作簿中

我有幾十個工作簿,每個工作表的第一個工作表上有數據。例如One.xlsx,Two.xlsx,Three.xlsx,Four.xlsx每個都包含有關其各自Sheet1的信息。

我需要將來自每個工作簿的Sheet1上的信息合併到單個工作簿中,工作簿中的工作簿是從原始工作簿的文件名命名的。因此,例如combined.xlsx將有4張名爲「一,二,三,四」的紙張。在任何情況下,所有關於基礎工作表的信息都應複製併合併到新工作簿中,如下所示。

  • 的格式,我需要

enter image description here

我發現這個宏/附加在網上說讓我接近我需要使用打開的文件中添加選擇。

http://www.excelbee.com/merge-excel-sheets-2010-2007-2013#close

打開的文件添加,在成功地讓我來彙總各種工作簿的工作表到一個單一的工作簿。但是,這些選項卡並未從原始文件的名稱命名。

  • 正確聚合工作表,但工作表名稱不正確。

enter image description here

現在所有基礎工作簿將在同一文件夾中。瀏覽和選擇文件的能力會很好,如果這種情況發生變化,但如果這太難了,只需在Visual Basic代碼中指示目錄路徑就行。只要最終的組合輸出應該是一個新的工作簿,新工作簿的文件名就不那麼重要了。例如,它可以被稱爲combined.xlsx。

回答

6

以下任務完成。

Option Explicit 

Private Sub CommandButton1_Click() 

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer 
Dim WrdArray() As String 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

directory = "c:\test\" 
fileName = Dir(directory & "*.xl??") 

Do While fileName <> "" 
    Workbooks.Open (directory & fileName) 
     WrdArray() = Split(fileName, ".") 
     For Each sheet In Workbooks(fileName).Worksheets 
     Workbooks(fileName).ActiveSheet.Name = WrdArray(0) 
      total = Workbooks("import-sheets.xlsm").Worksheets.Count 
      Workbooks(fileName).Worksheets(sheet.Name).Copy after:=Workbooks("import-sheets.xlsm").Worksheets(total) 

      GoTo exitFor: 

     Next sheet 

exitFor: 
    Workbooks(fileName).Close 
    fileName = Dir() 
Loop 

Application.ScreenUpdating = True 
Application.DisplayAlerts = True 

End Sub 
+0

是'import-sheets.xlsm'我正在運行宏的文件? – wviana 2016-07-15 20:21:14

+0

您可以添加一些評論嗎? – wviana 2016-07-18 12:23:19

+0

不再需要,謝謝你的發佈。幫助我很多。我做了一些改進,我應該分享一下嗎? https://gist.github.com/wviana/31d8dac7718b952e1ccf43eb3ee062be我解決了一些變數,以方便操作,無需每次調用​​'Workbooks(fileName)'。對不起,葡萄牙語評論。 – wviana 2016-07-18 14:54:05

1

在Excel中按Alt+F11,這將打開Excel VBA編輯器。

文章http://www.excel-spreadsheet.com/vba/debugging.htm解釋了一些基本知識如何使用它。

Module1中有2個包含約50行代碼的短子程序opensheetsmerge

使用F1將光標放在您不理解的字詞中,以瞭解它的含義。

一旦你明白了代碼的作用,你可以根據你的需要量身定做。

+0

我所期待的一些類似的代碼來實現我的目標,而不是從頭開始 – 2014-10-20 17:01:56

+0

@JayC代碼是存在的,就在宏,改變它來創建新的工作簿或重命名錶是簡單的俏皮話。但堆棧溢出是**沒有代碼寫入服務**。你必須展示一些努力,編寫一些代碼,展示它,Stack Overflow可以幫助你診斷和克服具體的編碼問題。我建議你開始解決你的任務,試着理解Merge-Macro.xlsm中的那些〜50行代碼,並可能產生一些新的更具體的編碼問題。到目前爲止,你做得很好 – xmojmr 2014-10-20 17:56:57

+0

謝謝,我同意並理解一些努力和問題的模板是必要的。不幸的是,鏈接的宏不可編輯,所以我不能用它來引導我。在這種情況下,一位同事能夠讓我開始工作,並進一步修改它以滿足我的需求。 – 2014-10-20 20:29:07

相關問題