Solved

Create new Workbook, copy sheets over in order, then save as

Posted on 2014-10-29
5
138 Views
Last Modified: 2014-11-13
This is horrible that I can't figure this out with the help of google.

I have a spreadsheet1 with 5 sheets(sheet1, sheet2, etc...). I want to open a new workbook, copy the sheets over in order, delete the original 3 sheets, then save as without a prompt.

This is what I am working with so far:
Sub SaveOut()
    thisWb = ActiveWorkbook.Name
    Workbooks.Add
    thatWb = ActiveWorkbook.Name
    
    Workbooks(thisWb).Activate
    
    Dim SH As Worksheet
    
    sheetCount = 1
    
    For Each SH In Workbooks(thisWb).Worksheets
        If InStr(SH.Name, "Main") Then
        Else
            SH.Copy Before:=Workbooks(thatWb).Sheets(sheetCount)
            sheetCount = sheetCount + 1
        End If
    Next SH
    
    For Each SH In Workbooks(thatWb).Worksheets
        If InStr(SH.Name, "Sheet") Then
            SH.Delete
        End If
    Next SH
    
End Sub

Open in new window

0
Comment
Question by:m_travis
  • 3
5 Comments
 
LVL 3

Expert Comment

by:byronwall
ID: 40411743
Which part is not doing what you expect?  Just looking at the code, you generally do not want to use a For Each to iterate through a collection that you are going to delete from.  It is better to do a simpler

For i = Workbooks(thatWb).Worksheets.Count To 1        
        Dim SH As Worksheet
        Set SH = Workbooks(thatWb).Worksheets(i)
        If InStr(SH.Name, "Sheet") Then
            SH.Delete
        End If
    Next i

Open in new window


to delete them.  This prevents the collection from changing size mid-loop.

If you don't want the alerts, then use

Application.DisplayAlerts = False

 'saveas code
'
'

Application.DisplayAlerts = True

Open in new window


If something else is not working, mention it specifically.
0
 
LVL 31

Expert Comment

by:Rob Henson
ID: 40413242
In the original workbook, if you select only the sheets that you require in the new workbook, you can create a copy of those as a new Workbook rather than opening a new workbook and copying to it. You then don't have the Sheet1, 2, 3 of the New workbook to delete.

Does that make sense?

Thanks
Rob H
0
 
LVL 1

Author Comment

by:m_travis
ID: 40413250
It does but i need this done in VBA.
0
 
LVL 31

Expert Comment

by:Rob Henson
ID: 40413259
The attached screen shot shows the Move or Copy dialogue after Right click on a tab and select "Move or Copy".

As you can see, the dropdown at the top gives the option for New Book.

If you have multiple sheets selected, all selected sheets will be copied. To select multiple sheets either
1) select first and then press Shift before selecting last, assuming all sheets in a group one after the other,
2) select first and then press Ctrl and select each of the others individually, no need for them to be together.

Thanks
Rob H
NewWorkbook.PNG
0
 
LVL 31

Accepted Solution

by:
Rob Henson earned 500 total points
ID: 40413267
This line will create a new file with only sheets 2 to 4 of the original, change sheet names appropriately:

Sheets(Array("Sheet2", "Sheet3", "Sheet4")).Copy

I tested it with a Sheet5 between 3 & 4 and it still only copied 2, 3 & 4.

Thanks
Rob H
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

A short article about a problem I had getting the GPS LocationListener working.
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now