EXCEL 2007 - Need Help creating a button which takes the contents of active worksheet and pastes it in a new worksheet

StackOverflow https://stackoverflow.com/questions/1745017

  •  20-09-2019
  •  | 
  •  

Question

I have search throughout this site to find a answer to my problem and most of the related solutions are for a far more complicated problem. Here is what I need to have done. I created a simple form in Excel 2007. I am looking for the ability to add a button at the bottom of the form which allows the user to click on the button and copy that worksheet into a new worksheet within the same excel document. Basically just duplicating the active worksheet.

I tried to do it with macros but did not get the desired results, and most of our co-workers still use Excel 2003 so I am not sure if macros will work in the older version of excel. I do not know any VBA which is why I come here in search of help from you all.

So to recap.

  1. One sheet Excel document with a simple form and a command button at the bottom of the active worksheet
  2. The command button "Copy and Paste" that worksheet into a new worksheet within the same excel document
  3. A solution that could work in both Excel 2003 and 2007 if possible. If not, for 2007.

Thanks so much ahead of time for anyone who is willing to help out a Novice Excel User.

Was it helpful?

Solution

Assuming that you know how to add a button here is a simple line of code to duplicate the active worksheet:

Sub Button1_Click()
    ActiveSheet.Copy after:=ActiveSheet
End Sub

OTHER TIPS

Maybe something like this (tested in Excel 2003 only):

Dim srcSheet, dstSheet
    Set srcSheet = ActiveSheet

    Sheets.Add
    Set dstSheet = ActiveSheet

    srcSheet.Activate
    srcSheet.Cells.Select
    Selection.Copy

    dstSheet.Activate
    dstSheet.Cells.Select
    ActiveSheet.Paste

You should find this method will work in both Excel 2003 and Excel 2007. In your form, add the following method:

Sub CopySheet(WorkSheetName as String)

    Dim WrkSht As Worksheet
    Set WrkSht = Sheets(WorkSheetName)

    WrkSht.Copy After:=Sheets(WorkSheetName)

    Set WrkSht = Nothing

End Sub

From the button click event, call it using:

Sub Button1_Click()

    Call CopySheet("WorkSheetToCopyName") 
    'You could also replace the string name with ActiveSheet if you so wish

End Sub

This will dump a copy of the worksheet in between the current sheet and the next one. I've tested it in Excel 2003 and Excel 2007 and it works in both. It doesn't give the second one a pretty name sadly - it just gets the same name as the source worksheet with (2) put after it.

All the formatting, protection and formulas are copied across too - it's a carbon copy of the first.

I know the question is quite old, but just wanted to note that you (and the user) can do the exact same thing with zero code: right-click on the sheet name at the bottom and select Move or Copy..., then check the Create a copy box and click Ok. Yes, it takes 4 clicks, but it is super easy and avoids code.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top