Φύλλο αντιγραφής VBA / φύλλο αντιγραφής σε άλλο βιβλίο εργασίας

Αυτό το σεμινάριο θα καλύψει τον τρόπο αντιγραφής ενός φύλλου ή ενός φύλλου εργασίας χρησιμοποιώντας VBA.

Αντιγραφή φύλλου εργασίας σε νέο βιβλίο εργασίας

Για να αντιγράψετε ένα φύλλο εργασίας σε ένα νέο βιβλίο εργασίας:

1 Φύλλα ("Φύλλο1"). Αντιγραφή

Αντιγραφή ActiveSheet σε νέο βιβλίο εργασίας

Για να αντιγράψετε το ActiveSheet σε ένα νέο βιβλίο εργασίας:

1 ActiveSheet.Copy

Αντιγραφή πολλών φύλλων σε νέο βιβλίο εργασίας

Για να αντιγράψετε πολλά φύλλα σε ένα νέο βιβλίο εργασίας:

1 ActiveWindow.SelectedSheets.Copy

Αντιγραφή φύλλου μέσα στο ίδιο βιβλίο εργασίας

Ξεκινήσαμε δείχνοντάς σας το πιο απλό παράδειγμα φύλλων αντιγραφής: αντιγραφή φύλλων σε ένα νέο βιβλίο εργασίας. Αυτά τα παραδείγματα παρακάτω θα σας δείξουν πώς να αντιγράψετε ένα φύλλο στο ίδιο βιβλίο εργασίας. Όταν αντιγράφετε ένα φύλλο σε ένα βιβλίο εργασίας, πρέπει να καθορίσετε μια τοποθεσία. Για να καθορίσετε μια τοποθεσία, θα πείτε στη VBA να μετακινήσει το φύλλο εργασίας ΠΡΙΝ ή ΜΕΤΑ από ένα άλλο φύλλο εργασίας.

Αντιγραφή φύλλου πριν από άλλο φύλλο

Εδώ θα καθορίσουμε την αντιγραφή και επικόλληση του Φύλλου πριν από το Φύλλο2

1 Φύλλα ("Φύλλο1"). Αντιγραφή πριν: = Φύλλα ("Φύλλο2")

Αντιγραφή φύλλου πριν από το πρώτο φύλλο

Αντί να καθορίσετε το όνομα του φύλλου, μπορείτε επίσης να καθορίσετε τη θέση του φύλλου. Εδώ αντιγράφουμε και επικολλάμε ένα φύλλο πριν από το πρώτο φύλλο στο τετράδιο εργασίας.

1 Φύλλα ("Φύλλο1"). Αντιγραφή πριν: = Φύλλα (1)

Το Φύλλο που δημιουργήθηκε πρόσφατα θα είναι τώρα το πρώτο Φύλλο στο Τετράδιο Εργασίας.

Αντιγραφή φύλλου μετά το τελευταίο φύλλο

Χρησιμοποιήστε την ιδιότητα After για να πείτε στη VBA να επικολλήσει το φύλλο ΜΕΤΑ από ένα άλλο φύλλο. Εδώ θα αντιγράψουμε και θα επικολλήσουμε ένα φύλλο μετά το τελευταίο φύλλο στο τετράδιο εργασίας:

1 Φύλλα ("Sheet1"). Αντιγραφή μετά: = Φύλλα (Sheets.Count)

Παρατηρήστε ότι χρησιμοποιήσαμε φύλλα. Υπολογίστε για να μετρήσετε τον αριθμό των φύλλων στο τετράδιο εργασίας.

Μετακίνηση φύλλου

Μπορείτε επίσης να μετακινήσετε ένα φύλλο μέσα σε ένα βιβλίο εργασίας χρησιμοποιώντας παρόμοια σύνταξη. Αυτός ο κωδικός θα μετακινήσει το Sheet1 στο τέλος του βιβλίου εργασίας:

1 Φύλλα ("Sheet1"). Μετακίνηση μετά: = Φύλλα (Sheets.Count)

Αντιγραφή και φύλλο ονομάτων

Μετά την αντιγραφή και επικόλληση ενός φύλλου, το νέο φύλλο γίνεται το ActiveSheet. Έτσι, για να μετονομάσετε το νέο μας φύλλο, χρησιμοποιήστε απλά το ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Φύλλα ("Sheet1"). Αντιγραφή μετά: = Φύλλα (Sheets.Count)ActiveSheet.Name = "LastSheet"Τέλος υπο

Εάν το όνομα του φύλλου υπάρχει ήδη, ο παραπάνω κώδικας θα δημιουργήσει σφάλμα. Αντ 'αυτού, μπορούμε να χρησιμοποιήσουμε το "On Error Resume Next" για να πούμε στο VBA να αγνοήσει την ονομασία του φύλλου και να προχωρήσει στην υπόλοιπη διαδικασία:

12345678 Sub CopySheetRename2 ()Φύλλα ("Sheet1"). Αντιγραφή μετά: = Φύλλα (Sheets.Count)Στο Σφάλμα Συνέχιση ΕπόμενοActiveSheet.Name = "LastSheet"Σφάλμα GoTo 0Τέλος υπο

Or χρησιμοποιήστε τη συνάρτηση RangeExists για να ελέγξετε εάν το όνομα του φύλλου υπάρχει ήδη πριν επιχειρήσετε να αντιγράψετε το φύλλο:

123456789101112131415161718 Sub CopySheetRename3 ()Αν RangeExists ("LastSheet") ΤότεMsgBox "Το φύλλο υπάρχει ήδη."ΑλλούΦύλλα ("Sheet1"). Αντιγραφή μετά: = Φύλλα (Sheets.Count)ActiveSheet.Name = "LastSheet"Τέλος εανΤέλος υποRangeExists (WhatSheet As String, Optional ByVal WhatRange As String = "A1") As BooleanDim test As RangeΣτο Σφάλμα Συνέχιση ΕπόμενοΟρισμός δοκιμής = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Σφάλμα GoTo 0Λειτουργία Τέλους

Αντιγραφή και όνομα φύλλου με βάση την τιμή κελιού

Μπορεί επίσης να θέλετε να αντιγράψετε και να ονομάσετε ένα Φύλλο με βάση την τιμή κελιού. Αυτός ο κωδικός θα ονομάσει το φύλλο εργασίας με βάση την τιμή κελιού στο Α1

12345678 Sub CopySheetRenameFromCell ()Φύλλα ("Sheet1"). Αντιγραφή μετά: = Φύλλα (Sheets.Count)Στο Σφάλμα Συνέχιση ΕπόμενοActiveSheet.Name = Εύρος ("A1"). ΤιμήΣφάλμα GoTo 0Τέλος υπο

Αντιγραφή φύλλου εργασίας σε άλλο βιβλίο εργασίας

Μέχρι στιγμής έχουμε εργαστεί με την αντιγραφή φύλλων μέσα σε ένα βιβλίο εργασίας. Τώρα θα καλύψουμε παραδείγματα για να αντιγράψετε και να επικολλήσετε Φύλλα σε άλλα βιβλία εργασίας. Αυτός ο κώδικας θα αντιγράψει ένα Φύλλο στην αρχή ενός άλλου βιβλίου εργασίας:

1 Φύλλα ("Φύλλο1"). Αντιγραφή πριν: = Βιβλία εργασίας ("Παράδειγμα.xlsm"). Φύλλα (1)

Αυτό θα αντιγράψει ένα φύλλο εργασίας στο τέλος ενός άλλου βιβλίου εργασίας.

1 Φύλλα ("Φύλλο1"). Αντιγραφή μετά: = Βιβλία εργασίας ("Παράδειγμα.xlsm"). Φύλλα (Τετράδια εργασίας ("Παράδειγμα.xlsm"). Φύλλα. Αριθμός)

Σημειώστε ότι αντικαταστήσαμε 1 με Τετράδια εργασίας ("Παράδειγμα.xlsm"). Φύλλα. Αριθμός για να λάβετε το τελευταίο φύλλο εργασίας.

Αντιγραφή φύλλου εργασίας σε κλειστό βιβλίο εργασίας

Μπορεί επίσης να θέλετε να αντιγράψετε ένα φύλλο εργασίας σε ένα βιβλίο εργασίας που είναι κλειστό. Αυτός ο κωδικός θα ανοίξει ένα κλειστό βιβλίο εργασίας, ώστε να μπορείτε να αντιγράψετε ένα φύλλο σε αυτό.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = ΛάθοςΟρισμός κλειστού βιβλίου = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Φύλλα ("Φύλλο1"). Αντιγραφή πριν: = κλειστό Βιβλίο. Φύλλα (1)closeBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueΤέλος υπο

Αντιγραφή φύλλου από άλλο βιβλίο εργασίας χωρίς να το ανοίξετε

Αντίστροφα, αυτός ο κώδικας θα αντιγράψει ένα φύλλο εργασίας ΑΠΟ ένα κλειστό βιβλίο εργασίας χωρίς να χρειαστεί να ανοίξετε χειροκίνητα το βιβλίο εργασίας.

123456789 Υπο CopySheetFromClosedWB ()Application.ScreenUpdating = ΛάθοςΟρισμός κλειστού βιβλίου = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closeBook.Sheets ("Sheet1"). Αντιγραφή πριν: = ThisWorkbook.Sheets (1)closeBook.Close SaveChanges: = ΛάθοςApplication.ScreenUpdating = TrueΤέλος υπο

Παρατηρήστε ότι και στα δύο αυτά παραδείγματα απενεργοποιήσαμε το ScreenUpdating, ώστε η διαδικασία να εκτελείται στο παρασκήνιο.

Διπλότυπο φύλλο Excel Πολλαπλές φορές

Μπορείτε επίσης να αντιγράψετε ένα φύλλο Excel πολλές φορές χρησιμοποιώντας ένα βρόχο.

1234567891011121314 Υπο CopySheetMultipleTimes ()Dim n ως ακέραιοςDim i As IntegerΣτο Σφάλμα Συνέχιση Επόμενοn = InputBox ("Πόσα αντίγραφα θέλετε να κάνετε;")Αν n> 0 ΤότεΓια i = 1 έως nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)ΕπόμενοΤέλος εανΤέλος υπο

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave