PDA

View Full Version : Save each Worksheets as Macro disabled workbooks



nickface
01-28-2013, 01:54 AM
Hey all, i heard this was a well respected forum with good feedback. I need a little guidance...
I have a master file 'Copy and Save.xlsm'. It contains 3 tabs: FR, GM, and CH.

I want to save a copy of each tab to a new Excel file and name the file as Tab name - Master file name, e.g. FR - Copy and Save. xls. The master file is a Macro enabled Excel 2003 format and The new file need to be plain Excel 2003-2007 format rather than a Macro enabled format..(It should be ok to change the master file to Macro enabled format but the new files have to be Excel 2003 format...)

My Macro is able to create a new workbook, save and name it but can't move on to the next tab...


Sub copy_save()
'
' Move and make a copy of each tab from the master file and save as a new workbook. Name it tab name - master file name
'
'
ActiveSheet.Select
pName = ActiveWorkbook.Path ' the path of the currently active file, the master file
wbName = ActiveWorkbook.Name ' the file name of the currently active master file
shtName = ActiveSheet.Name ' the name of the currently selected worksheet, the master file

For i = 1 To Worksheets.Count

ActiveSheet.Select
ActiveSheet.Copy
Tabname = pName & "\" & shtName & " - " & wbName 'Name the new workbook as: Tab name - master file name

Dim Newshtname As String
Newshtname = Tabname

ActiveWorkbook.SaveAs Filename:= _
Newshtname, FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False


Sheet(shtName).Activate ' want to Return to master file and move and save the next tab. This doesn't work however.

Range("A1").Select

ActiveSheet.Next.Select 'move to next tab

Next i

End

End Sub

Admin
01-28-2013, 07:47 AM
Hi

Welcome to ExcelFox !!

Use code tag while posting macro :) This time I have added for you.

try


Option Explicit
' Move and make a copy of each tab from the master file and save as a new workbook. Name it tab name - master file name

Sub copy_save()

Dim pName As String
Dim wbName As String
Dim shtName As String
Dim TabName As String
Dim NewName As String
Dim i As Long
Dim MyShts

MyShts = Array("FR", "GM", "CH")

pName = ThisWorkbook.Path ' the path of the currently active file, the master file
wbName = ThisWorkbook.Name ' the file name of the currently active master file

For i = LBound(MyShts) To UBound(MyShts)
shtName = ThisWorkbook.Worksheets(MyShts(i)).Name ' the name of the currently selected worksheet, the master file
TabName = pName & "\" & shtName & " - " & wbName 'Name the new workbook as: Tab name - master file name
ThisWorkbook.Worksheets(shtName).Copy
ActiveWorkbook.SaveAs Filename:=Left(TabName, InStrRev(TabName, ".") - 1), FileFormat:=51
ActiveWorkbook.Close 0
NewName = Left(TabName, InStrRev(TabName, ".")) & "xls"
Name Left(TabName, InStrRev(TabName, ".")) & "xlsx" As NewName
Next i

End Sub