Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
I have a master file with a macro in it. When I click a button, the macro
will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Ron,
thanks a lot! It works for me. I have another question, how do I copy just a range of cells from each sheets? Actually, I don't want to include column A. I'm using Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy right now and it copies all cells in the sheets. Thanks! "Ron de Bruin" wrote: Hi lwidjaya See http://www.rondebruin.nl/saveas.htm I use ActiveSheet.Copy But you can also use this to copy more sheets Sheets(Array("Sheet1", "Sheet3")).Copy -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... I have a master file with a macro in it. When I click a button, the macro will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Try this one
Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String Dim sh As Worksheet With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook For Each sh In Destwb.Worksheets sh.Columns("A").Delete Next sh 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Hi Ron, thanks a lot! It works for me. I have another question, how do I copy just a range of cells from each sheets? Actually, I don't want to include column A. I'm using Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy right now and it copies all cells in the sheets. Thanks! "Ron de Bruin" wrote: Hi lwidjaya See http://www.rondebruin.nl/saveas.htm I use ActiveSheet.Copy But you can also use this to copy more sheets Sheets(Array("Sheet1", "Sheet3")).Copy -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... I have a master file with a macro in it. When I click a button, the macro will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks Ron. I think I said it wrong. Actually, I have a button with macro in
sheet 1 and I place it in column A. Stupid me, I thought deleting the column will delete the button. My intention was to delete the button/macro in the sheet 1 in the new file. How do I do that? Thanks! "Ron de Bruin" wrote: Try this one Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String Dim sh As Worksheet With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook For Each sh In Destwb.Worksheets sh.Columns("A").Delete Next sh 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Hi Ron, thanks a lot! It works for me. I have another question, how do I copy just a range of cells from each sheets? Actually, I don't want to include column A. I'm using Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy right now and it copies all cells in the sheets. Thanks! "Ron de Bruin" wrote: Hi lwidjaya See http://www.rondebruin.nl/saveas.htm I use ActiveSheet.Copy But you can also use this to copy more sheets Sheets(Array("Sheet1", "Sheet3")).Copy -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... I have a master file with a macro in it. When I click a button, the macro will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You can change the properties of the button and use the last macro or use this one
to delete the DrawingObjects in "Sheet1" Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook On Error Resume Next With Destwb.Worksheets("Sheet1") .DrawingObjects.Visible = True .DrawingObjects.Delete End With On Error GoTo 0 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Thanks Ron. I think I said it wrong. Actually, I have a button with macro in sheet 1 and I place it in column A. Stupid me, I thought deleting the column will delete the button. My intention was to delete the button/macro in the sheet 1 in the new file. How do I do that? Thanks! "Ron de Bruin" wrote: Try this one Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String Dim sh As Worksheet With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook For Each sh In Destwb.Worksheets sh.Columns("A").Delete Next sh 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Hi Ron, thanks a lot! It works for me. I have another question, how do I copy just a range of cells from each sheets? Actually, I don't want to include column A. I'm using Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy right now and it copies all cells in the sheets. Thanks! "Ron de Bruin" wrote: Hi lwidjaya See http://www.rondebruin.nl/saveas.htm I use ActiveSheet.Copy But you can also use this to copy more sheets Sheets(Array("Sheet1", "Sheet3")).Copy -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... I have a master file with a macro in it. When I click a button, the macro will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thanks sooo..much... I was able to make it work!
"Ron de Bruin" wrote: You can change the properties of the button and use the last macro or use this one to delete the DrawingObjects in "Sheet1" Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook On Error Resume Next With Destwb.Worksheets("Sheet1") .DrawingObjects.Visible = True .DrawingObjects.Delete End With On Error GoTo 0 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Thanks Ron. I think I said it wrong. Actually, I have a button with macro in sheet 1 and I place it in column A. Stupid me, I thought deleting the column will delete the button. My intention was to delete the button/macro in the sheet 1 in the new file. How do I do that? Thanks! "Ron de Bruin" wrote: Try this one Sub Copy_Test() 'Working in Excel 97-2007 Dim FileExtStr As String Dim FileFormatNum As Long Dim Sourcewb As Workbook Dim Destwb As Workbook Dim TempFilePath As String Dim TempFileName As String Dim sh As Worksheet With Application .ScreenUpdating = False .EnableEvents = False End With Set Sourcewb = ActiveWorkbook Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy Set Destwb = ActiveWorkbook For Each sh In Destwb.Worksheets sh.Columns("A").Delete Next sh 'Determine the Excel version and file extension/format With Destwb If Val(Application.Version) < 12 Then 'You use Excel 97-2003 FileExtStr = ".xls": FileFormatNum = -4143 Else 'You use Excel 2007 'We exit the sub when your answer is NO in the security dialog that you 'only see when you copy a sheet from a xlsm file with macro's disabled. If Sourcewb.Name = .Name Then With Application .ScreenUpdating = True .EnableEvents = True End With MsgBox "Your answer is NO in the security dialog" Exit Sub Else Select Case Sourcewb.FileFormat Case 51: FileExtStr = ".xlsx": FileFormatNum = 51 Case 52: If .HasVBProject Then FileExtStr = ".xlsm": FileFormatNum = 52 Else FileExtStr = ".xlsx": FileFormatNum = 51 End If Case 56: FileExtStr = ".xls": FileFormatNum = 56 Case Else: FileExtStr = ".xlsb": FileFormatNum = 50 End Select End If End If End With 'Save the new workbook and close it TempFilePath = Application.DefaultFilePath & "\" TempFileName = "Part of " & Sourcewb.Name & " " & Format(Now, "dd-mmm-yy h-mm-ss") With Destwb .SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum .Close SaveChanges:=False End With MsgBox "You can find the new file in " & Application.DefaultFilePath With Application .ScreenUpdating = True .EnableEvents = True End With End Sub -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... Hi Ron, thanks a lot! It works for me. I have another question, how do I copy just a range of cells from each sheets? Actually, I don't want to include column A. I'm using Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Copy right now and it copies all cells in the sheets. Thanks! "Ron de Bruin" wrote: Hi lwidjaya See http://www.rondebruin.nl/saveas.htm I use ActiveSheet.Copy But you can also use this to copy more sheets Sheets(Array("Sheet1", "Sheet3")).Copy -- Regards Ron de Bruin http://www.rondebruin.nl/tips.htm "lwidjaya" wrote in message ... I have a master file with a macro in it. When I click a button, the macro will copy 3 sheets from the master file to a new book. I have macros in 2 of the sheets that I copy. It works fine (meaning the macros are copied over to the new book also) until the macro runs the saveas function: ActiveWorkbook.SaveCopyAs "C:\New\" & NewName & ".xls" The new file doesn't have any macro in it. I tried saving the new file as .xlsm and .xlsx but Excel doesn't recognize the file extensions when I open the new file. What should I do to keep the macro in the new file? Thanks in advance. |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
copy worksheets to new book without linking to original book | Excel Discussion (Misc queries) | |||
copy 2007 created macro to run in 2003 | Excel Discussion (Misc queries) | |||
Copy macro to a new book in 2007 | Excel Programming | |||
macro: copy multiple workbooks to multiple tabs in single book | Excel Programming | |||
macro to copy specific rows to a new book | Excel Programming |