2009-11-16 14 views
1

J'ai cherché dans ce site pour trouver une réponse à mon problème et la plupart des solutions connexes sont beaucoup plus compliquées problème. Voici ce que j'ai besoin d'avoir fait. J'ai créé un formulaire simple dans Excel 2007. Je cherche la possibilité d'ajouter un bouton au bas du formulaire qui permet à l'utilisateur de cliquer sur le bouton et de copier cette feuille de calcul dans une nouvelle feuille de calcul dans le même document Excel. Fondamentalement juste en dupliquant la feuille de calcul active.EXCEL 2007 - Besoin d'aide pour créer un bouton qui récupère le contenu d'une feuille de calcul active et la colle dans une nouvelle feuille de calcul

J'ai essayé de le faire avec des macros mais je n'ai pas obtenu les résultats désirés, et la plupart de nos collègues utilisent encore Excel 2003 donc je ne suis pas sûr que les macros fonctionneront dans l'ancienne version d'Excel. Je ne connais aucun VBA, c'est pourquoi je viens ici pour chercher de l'aide de votre part.

Donc, pour récapituler.

  1. document Excel une feuille avec une forme simple et un bouton de commande au bas de la feuille active
  2. Le bouton de commande « Copier et Coller » cette feuille de calcul dans une nouvelle feuille de calcul dans le même document Excel
  3. Une solution qui pourrait fonctionner à la fois dans Excel 2003 et 2007 si possible. Si non, pour 2007.

Merci beaucoup d'avance pour toute personne désireuse d'aider un utilisateur Novice Excel.

Répondre

1

En supposant que vous savez comment ajouter un bouton est ici une simple ligne de code pour dupliquer la feuille active:

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

Andrew mon homme !! Brillant!! C'est parfait et il a tenu à toute la mise en forme et la protection de la feuille de calcul! Merci beaucoup! – Stat1124

+0

bonne appréciation, si seulement tout le monde était si reconnaissant. –

0

Peut-être quelque chose comme ça (testé dans Excel 2003 uniquement):

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 
+0

Ok, j'ai juste essayé cela en utilisant Excel 2007 et j'ai obtenu l'erreur suivante: Erreur d'exécution '9': Indice hors de portée. – Stat1124

+0

J'ai utilisé un autre nom. voici le code: Private Sub CommandButton1_Click() Feuilles ("MultipleChoice"). Sélectionnez Selection.Copy Feuilles.Ajouter Feuilles ("NewSheet").Sélectionnez ActiveSheet.Paste End Sub – Stat1124

+0

Donc, ma question est maintenant si le nom dans "" est un nom que je choisis ou doit-on être spécifique à partir de la feuille de calcul source qui est en cours de copie! – Stat1124

0

Vous devriez trouver cette méthode fonctionnera à la fois Excel 2003 et Excel 2007. dans votre formulaire, ajoutez la méthode suivante:

Sub CopySheet(WorkSheetName as String) 

    Dim WrkSht As Worksheet 
    Set WrkSht = Sheets(WorkSheetName) 

    WrkSht.Copy After:=Sheets(WorkSheetName) 

    Set WrkSht = Nothing 

End Sub 

À partir du bouton événement click, appelez à l'aide:

Sub Button1_Click() 

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

End Sub 

Cela videra une copie de la feuille de calcul entre la feuille et la suivante. Je l'ai testé dans Excel 2003 et Excel 2007 et cela fonctionne dans les deux cas. Il ne donne malheureusement pas un joli nom au second - il reçoit juste le même nom que la feuille de calcul source avec (2) mis après.

Tout le formatage, la protection et les formules sont copiés aussi - c'est une copie carbone de la première.

+0

Ben, je vais faire un essai et l'envoyer aux gens avec Excel 2003 pour s'assurer qu'ils peuvent le voir, avec la suggestion d'Andrew. J'apprécie que vous preniez le temps de m'aider! – Stat1124

0

Je sais que la question est assez ancienne, mais je voulais juste noter que vous (et l'utilisateur) pouvez faire exactement la même chose avec zéro code: faites un clic droit sur le nom de la feuille en bas et sélectionnez Déplacer ou copier ..., puis cochez la case Créer une copie et cliquez sur Ok. Oui, cela prend 4 clics, mais c'est super facile et ça évite le code.