Professor Excel

Comments 38

  1. Daniel Wise


    I want a routine to compare and merge some workbook into one or only merge some workbooks into one. I don’t want a only copy a sheet, no…. I want to MERGE copies of one workbook into one.

    I hope you can help me


  2. Sharyn

    Hi. I used method 4 to merge numerous excel files into one workbook.

    After each file it gives me a message that says “The name ‘NvsInstanceHook’ already exists. Click Yes to use that version of the name or click No to rename the version of ‘NvsInstanceHook’ you’re moving or copying”
    I click yes. Then it asks me if I want to save or not save the file. I click not save,

    How do I get the script to automate answering both those prompts so I don’t need to manually select?

    Also, how do I save this script so I can keep using it over and over again?

  3. Jacqui


    I used the VBA method which worked like a charm except I had to click “save” after every file was processed. Is there any way to include that in the module?



    • Henrik Schiffner

      Hi Jacqui,
      Please replace this line:


      by these lines:

      Application.DisplayAlerts = False
      Application.DisplayAlerts = True

      This should avoid the error messages. But please make sure that your work is saved…

  4. Brent R.

    “Method 5: Automatically merge workbooks
    The third way is probably most convenient:”

    Is that a “Monty Python & the Holy Grail” reference? 😀

    • Henrik Schiffner

      Haven’t seen it actually. But I corrected the mistake… it’s the fifth way 😉

  5. Jonas Tiger

    I tried method 4 (VBA) and it works fine for a simple merge.
    But what I want is to update the merge task withou duplicate sheets.
    I have three large files updating in a daily basis (each one with one sheet). Then i need to merge all of them into one evaryday.
    Using your method 4 for second time, it duplicates sheets, instead of replacing the existing sheets.

    So, it would be nice if you provide the changes needed in your code to do the update and, if possible, to execute automatically every 24 hours.

    Thank You very much for your time

  6. hari

    i want to combine a specific sheet from the source files to a work book. Not all the work sheets in the source files.Suppose three product files , (product1 , product2 and product3) all the files has many sheets like sales,employees, expenses and so on. But i need only sales sheets from all the 3 product files into one work book (not in one work sheet)

    • Henrik Schiffner

      Hi Hari,
      I’m working on an advanced merge function for my add-in. But it’ll take some time.
      Best regards,

  7. vvs

    when i used vba code it worked fine but i want all the data to merged in one single worksheet instead of seperate worksheets in one workbook.

  8. vvs

    Hi Henrik,
    Instead of running the code twice is there any chance that merging the data from different works books into one single workbook on one tym running the vba code .

  9. Jo

    What if you aren’t merging workbooks (.xlsx), but other data files saves as .csv, or .txt, or .dat .. can the VBA script handle those?

    • Henrik Schiffner

      Hi Jo,
      Probably it’ll work as well. Just give it a try…

  10. sherazad


    Thanks very much for your code, I tried it, it works but I have this error message: Run-time error ‘1004’ Method ‘Copy’ of object ‘Worksheet’ failed, could you please help me on this.

    Best regards.

  11. vvs

    Hi Henrik, the code corked fine. now ,i want to delete the header rows in the merge file when it is executed and should display only final header row at the top but not all the header rows.

  12. Ali

    I have multiple workbooks with multiple worksheets (same columns for all workbooks, but different columns within each workbook ie. both book1 and book2 have sheet1 and sheet2, or more). Your code adds ALL sheets one after another, so I end up having 4 tabs in the output. Can you tweak it so sheet1 from book1 and book2 are merged in one new sheet, and sheet2 from book1 and book2 are merged in another sheet (2 sheets 1 workbook in the output)? Thanks!

  13. Renato

    HI Henrik,

    thank you very much for the VBA code.
    Could you please help me a bit related to that code?
    I should copy only the 2nd, 3rd and 4th sheets from each excel workbook into a separate one. How should I change the code to be able to avoid the remaining tabs?

    Thank you,

  14. Joe

    I seriously love you for posting #4 (with the adjustment in your comment reply. Instead of requesting more customization I’ll tell you a story. I’ve been on a self-directed crash-course in VBA since stepping into an analyst role two weeks ago, tasked with (among other things) collecting and tracking responses for procedural non-compliance from a few hundred field units. Old method: field offices were sent a 32-column data export and attempted to copy/paste the rows which apply to their office into a separate “Response Form” (aka a Word doc) along with additional identifying info and investigation/action details. The analyst tracked responses by highlighting lines on a pivot table, which was challenging because few field units could successfully copy/paste 32 cells or provide all requested info or type a Subject line that distinguished one response from 100 others. My method: Turned the Word Doc into a 32-column worksheet, merged it with the data export, added a Double-Click event function so *anyone* can fully populate their response form directly from the data export tab; gave the form a 1-click “Submit” function which references identifying data (via their double-click event) to rename the worksheet which then duplicates and emails itself to me with a subject line that also references identifying data; found Outlook VBA that extracts all attachments from the folder which their responses (with those uniform and predictable subject lines) are filtered to, to an Import-folder on my desktop; and a tracker column on my master data export which matches identifying info from the response sheets as I import them into the tracking worksheet. The ONLY thing missing has been a convenient way to batch-import those attachments into the tracker without requiring an Add-In (miles of red tape to get one approved). I knew it could be done but was unable to find an answer for the past two weeks before stumbling onto this post. You’re a God-send at the end of a 13-hour day. Thank you.

  15. Sina

    I try to merge 300 excel files. Although I use the method 5, when I combine sheets I have got some problem. the problem is I have got billion cell at end of my first sheet’s number … what I can do with this cells.
    The problem gone when I save the excel sheets one more time , but I dont want to ( save as) all my 300 excel files again.

  16. Saud

    Excellent !!!

    Is it possible to name the sheets accordingly to their filenames?

  17. OSM

    every ten minutes i’ll recieve and excel file how can i merge this file which is been recived every ten minutes to a new excel file automatically ?

  18. aleshia Carr

    I have 70 workbooks with multiple sheets, I only want a specific sheet from each workbook, how can I tweek the code in #4 to accomplish this?

  19. Cory

    I used method 6, and it worked amazingly. That saved me about 3 hours of manually copy and pasting 6 months of daily files into a single sheet. Thank you so much for the instructions, very VERY much appreciated.

  20. Josh Van Niekerk

    Hi Henrik,

    On Method 4, how do I add a step to include a column that adds the file name to each line item?

  21. ICHA

    I try to use #4 VBA code, however I get a Run-Time error ‘424’ Object required. Strange when it works for every one else. Do you have any explanations for this?

  22. ICHA

    I try to use #4 VBA code, however I get a Run-Time error ‘424’ Object required. Strange when it works for every one else. Do you have any explanations for this?

  23. PG

    This works great (method 4). This is way better than other vba online. Thanks.
    However, I’m looking to merge just a single specific worksheet of many workbooks into one. Is this something we can look forward to?

    Can we go further and get a specific cell/s, of a specific sheet, of several selected workbooks?

    • Henrik Schiffner

      Should be something like:

      Instead of
      ‘Copy each worksheet to the end of the main workbook
      For Each tempWorkSheet In sourceWorkbook.Worksheets
      tempWorkSheet.Copy after:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count)
      Next tempWorkSheet

      try this:
      ‘Copy each worksheet to the end of the main workbook
      For Each tempWorkSheet In sourceWorkbook.Worksheets
      If tempWorkSheet.Name = “worksheet name to copy” then
      tempWorkSheet.Copy after:=mainWorkbook.Sheets(mainWorkbook.Worksheets.Count)
      End If
      Next tempWorkSheet

      I haven’t tried it, but please let me know if it works.

  24. Docbrody

    Is there a way to merge workbooks, but not copy and paste. I’ve got myself in a bit of a pickle. I really need to combine a couple workbooks, but they are each fairly complex with various tables, pivots, named ranges and functions, and a few macros sprinkled around. I guess I’ll have to do this by hand. The data will be easy to migrate, but I’ll have to basically rebuild all the functionality of the old in a new combined workbook.

  25. Taruchit Goyal

    Dear Sir,

    I was able to follow method 5, and successfully able to implement it except at one point.

    I have a column in the workbooks having data such as 0.5, 1, 2.5

    However, after consolidation with method 5, it makes 0.5 as 0, 2.5 as 2.

    Thus, it will be very helpful if you can share solution to the problem.


  26. RB

    Is there a routine to pick up 4 files and merge into 1 file with 4 tabs ?

    Need to do this for 4000 files without manual intervention. 4000 files to be converted into 1000 files with 4 tabs each.

Leave a comment

%d bloggers like this: