Ανανέωση ιστοσελίδας
ms-office.gr > Forum > Microsoft Excel > Excel - Ερωτήσεις / Απαντήσεις > [VBA] VBA - Πολλαπλή Αντιγραφή ΦΥΛΛΟΥ Excel

Excel - Ερωτήσεις / Απαντήσεις Ότι έχει σχέση με συναρτήσεις, μορφοποίηση, εκτυπώσεις γραφήματα κτλ.

Απάντηση στο θέμα

 

Εργαλεία Θεμάτων Τρόποι εμφάνισης
  #1  
Παλιά 18-03-15, 16:34
Όνομα: ΕΛΕΝΗ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-03-2015
Περιοχή: ΑΘΗΝΑ
Μηνύματα: 8
Προεπιλογή VBA - Πολλαπλή Αντιγραφή ΦΥΛΛΟΥ Excel

Καλησπέρα σας...!!!
Θα ήθελα σας παρακαλώ μία macro (VBA) η οποία θα αντιγράφει ένα συγκεκριμένο φύλλο ενός βιβλίου με το περιεχόμενό του μέσα στο ίδιο βιβλίο.
Το όνομα και το πλήθος τους είναι συνάρτηση των περιεχομένων της στήλης Α και η οποία δεν ανήκει στο ίδιο φύλλο..

Σας ευχαριστώ πολύ
Απάντηση με παράθεση
  #2  
Παλιά 18-03-15, 19:05
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλησπέρα
Έστω στο φύλλο με κωδικό όνομα Sheet1, από a1 έως a(ν)... ονόματα φύλλων.
Έστω το φύλλο με κωδικό όνομα Sheet2, το φύλλο που θα αντιγραφεί.

Ο παρακάτω κώδικας, είναι υποδειγματικός και μπορεί να δημιουργήσει
από ένα έως 255 φύλλα.

Προϋποθέσεις:
1 . Τα Ονόματα φύλλων, στην περιοχή a1 έως a(ν)... είναι σωστά γραμμένα.
(δεν υπάρχουν πχ ονόματα: φύλλο/22 ή με άλλους απαγορευμένους χαρακτήρες)
2 . Δεν υπάρχουν, διπλότυπα.
3 . Δεν υπάρχουν, κενά κελιά, ανάμεσα στο a1 & a(ν)...

Για να μην υπάρχει καμιά προϋπόθεση θα πρέπει να δημιουργηθεί:
Πλήρης κώδικας με έλεγχο όλων των πιθανών σφαλμάτων (τα οποία είναι αρκετά).

Κώδικας:
Sub SheetCreator()
    Dim rng As Range, c As Range, lastrow As Byte    '(0 to 255)
    lastrow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row
    Set rng = Sheet1.Range("a1:a" & lastrow)
    
    For Each c In rng
            Sheet2.Copy after:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = c.Text
    Next c
End Sub
Απάντηση με παράθεση
  #3  
Παλιά 19-03-15, 15:50
Όνομα: ΕΛΕΝΗ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-03-2015
Περιοχή: ΑΘΗΝΑ
Μηνύματα: 8
Προεπιλογή

Επίσης - πάνω στο ίδιο θέμα- μου λέτε σας παρακαλώ και πώς πριν θα διαγράψω ό,τι άλλα φύλλα υπάρχουν και περιέχει το εν λόγω βιβλίο ΕΚΤΟΣ κάποιων συγκεκριμένων, και βέβαια των sheet1 και sheet2.
(Δηλαδή ζητώ πριν την έναρξη της εργασίας μου να καθαρίσω το βιβλίο μου από τυχόν ανεπιθύμητα φύλλα και να παραμείνουν τα παραπάνω)
Σας ευχαριστώ
Απάντηση με παράθεση
  #4  
Παλιά 19-03-15, 22:22
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Καλησπέρα
Για την ολοκλήρωση του θέματος ένας ακόμα κώδικας παράδειγμα.
Βάλτε τον δεύτερο κώδικα

Κώδικας:
Sub wshDel()
    Dim sh As Worksheet
    Application.DisplayAlerts = False
    For Each sh In Worksheets
        If sh.CodeName = "Sheet5" Or sh.CodeName = "Sheet3" Then
            sh.Delete
        End If
    Next sh
    Application.DisplayAlerts = True
End Sub
και τον τίτλο του wshDel στο κενό μετά το
Set rng = Sheet1.Range("a1:a" & lastrow) στον πρώτο.

Ο κώδικας διαγράφει τα φύλλα με κωδικό όνομα Sheet5 & Sheet3
Μπορείτε να κάνετε τα ονόματα link σε Range ή Cell.

Σημείωση:
Όλοι οι κώδικες (γενικά στον προγραμματισμό) θα πρέπει να είναι
προσαρμοσμένοι 100% στο ζητούμενο που πρέπει να αποδώσουν.
Αν το ζητούμενο είναι λίγο «χύμα» και οι κώδικες θα είναι «χύμα» και πιθανόν να μην
εκτελούν σωστά ή και με ευκολία το ζητούμενο.
Απάντηση με παράθεση
  #5  
Παλιά 20-03-15, 01:53
Όνομα: ΕΛΕΝΗ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-03-2015
Περιοχή: ΑΘΗΝΑ
Μηνύματα: 8
Προεπιλογή

Καλησπέρα σας...!!!
Το αποτέλεσμα του κώδικα στα παραπάνω σχετικά ζητούμενα είναι το παρακάτω

Compile error:
Ambiguous name detected: WshDel


Ίσως οι λίγες γνώσεις μου στην VBA καθώς και η μη άμεση συνάφεια με το παρόν αντικείμενο - πληροφορικής - δεν μου
επιτρέπουν να κατανοήσω εις βάθος και να επιλύσω το πρόβλημα στο τι ακριβώς συμνβαίνει.
Ας μου επιτραπεί να παραθέσω το όλο πρόβλημα μου εξ αρχής με όσο το δυνατόν καλλίτερη σαφήνεια, ζητώντας σ
υγγνώμη εκ των προτέρων για κάθε πιθανή σας αναστάτωση.

Έστω ένα βιβλίο που περιέχει τα ΦΥΛΛΑ:
φύλλο1, φύλλο2, Φύλλο3,φύλλο4, Φύλλο5, Φύλλο6, Φύλλο7, Φύλλο8, Φύλλο9 κλπ
Έστω στο φύλλο1 στην στήλη Α2,Α3,Α4,Α5,Α6,Α7 κλπ περιέχονται διάφορα ΟΝΟΜΑΤΑ.
και στο Φύλλο2 περιέχεται ένα πίνακας με στοιχεία

Αναζητώ μία αυτοματοποιημένη διαδικασία macro (VBA); η οποία, κατά την γνώμη μου πρέπει να επενεργεί ως εξής:
1. Θα διαγράφει ΟΛΑ τα φύλλα που περιέχονται στο συγκεκριμένο βιβλίο εκτός βέβαια των φύλλων,
Φύλλο1 κ Φύλλο2 που απαιτούνται για τις παραπάνω εργασίες καθώς επίσης πρέπει να διατηρεί (ΔΕΝ ΘΑ ΔΙΑΓΡΑΦΕΙ)
κάποια άλλα ΣΥΓΚΕΚΡΙΜΕΝΑ (μικρός αριθμός ως προς το πλήθος περίπου 2-4 και γνωστά εκ των προτέρων )
2. Θα δημιουργεί μέσα στο ίδιο βιβλίο τόσα φύλλα όσα και τα στοιχεία Α2,Α3,Α4,Α5 Α6,Α7κλπ
(με ΟΝΟΜΑ εκάστου φύλλου τα περιεχόμενα των Α2,Α3,Α4,Α5 κλπ) και τέλος
3. Θα αντιγράφει το φύλλο2 μέσα σε όλα αυτά τα παραπάνω Α2,Α3,Α4,Α5,Α6,Α7 κλπ


Σας ευχαριστώ πολύ
Απάντηση με παράθεση
  #6  
Παλιά 20-03-15, 08:01
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Ανεβάστε αρχείο παράδειγμα, διότι η γλώσσα σας στο Office είναι Ελληνικά και επομένως και τα κωδικά ονόματα φύλλων, είναι διαφορετικά.
Απάντηση με παράθεση
  #7  
Παλιά 20-03-15, 11:51
Όνομα: ΕΛΕΝΗ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-03-2015
Περιοχή: ΑΘΗΝΑ
Μηνύματα: 8
Προεπιλογή

Έστω το παρακάτω βιβλίο που περιέχει τα ΦΥΛΛΑ:
Φύλλο1, Φύλλο2, Φύλλο3,φύλλο4, Φύλλο5, Φύλλο6, Φύλλο7, Φύλλο8, Φύλλο9 κλπ
στο φύλλο1 στην στήλη Α2,Α3,Α4,Α5,Α6,Α7 κλπ περιέχονται διάφορα ΟΝΟΜΑΤΑ.
(Παρακάτω εικόνα παράδειγμα)


Επίσης στο Φύλλο2 περιέχεται ένα πίνακας με στοιχεία
(Παρακάτω εικόνα παράδειγμα)



Μετά την επενέργεια της macro-εντολής:
(Παρακάτω εικόνα παράδειγμα)


1. Εχουν δημιουργηθεί τα νέα φύλλα (ΟΝΟΜΑ1, ΟΝΟΜΑ2,ΟΝΟΜΑ3 κλπ) που περιείχε το αρχικό Φύλλο1
στα στοιχεία Α2,Α3,Α4, κλπ (βλέπε εικόνα1)
2. Μέσα σε ΟΛΑ αυτά έχει αντιγραφεί το περιεχόμενο από το Φύλλο2 (Βλέπε εικόνα 2) και
3. Έχουν διαγραφεί ΟΛΑ τα υπόλοιπα φύλλα που περιέχονται στο συγκεκριμένο βιβλίο εκτός των φύλλων, Φύλλο1, Φύλλο2 και των Φύλλο5, Φύλλο7
(Τα Φύλλο1, Φύλλο2 πάντα παραμένουν ενώ τα υπόλοιπα που επιθυμούμε να παραμείνουν
μπορούν να αλλάξουν κατ' επιθυμία ως προς το πλήθος ή προς τω αριθμώ???)
Αν όχι τότε ας γίνουν πάντα σταθερά και αυτά.


Σας ευχαριστώ πολύ για την κατανόηση
με εκτίμηση
ΕΛΕΝΗ
Απάντηση με παράθεση
  #8  
Παλιά 20-03-15, 12:11
Το avatar του χρήστη Spirosgr
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Στο post δεν υπάρχουν φωτογραφίες (πιθανό το format που έχετε δεν υποστηρίζεται)
Ανεβάστε αρχείο excel και εξηγήστε εκεί μέσα τι θέλετε.
Απάντηση με παράθεση
  #9  
Παλιά 20-03-15, 14:15
Όνομα: ΕΛΕΝΗ
Έκδοση λογισμικού Office: Ms-Office 2010
Γλώσσα λογισμικού Office: Ελληνική
 
Εγγραφή: 18-03-2015
Περιοχή: ΑΘΗΝΑ
Μηνύματα: 8
Προεπιλογή

Έστω το παρακάτω βιβλίο που περιέχει τα ΦΥΛΛΑ:
Φύλλο1, Φύλλο2, Φύλλο3,φύλλο4, Φύλλο5, Φύλλο6, Φύλλο7, Φύλλο8, Φύλλο9 κλπ
στο φύλλο1 στην στήλη Α2,Α3,Α4,Α5,Α6,Α7 κλπ περιέχονται διάφορα ΟΝΟΜΑΤΑ.
(Παρακάτω εικόνα παράδειγμα)
https://app.box.com/s/wjrmfw49tc65i7bwjfb4ee30ndrzt13z

Επίσης στο Φύλλο2 περιέχεται ένα πίνακας με στοιχεία
(Παρακάτω εικόνα παράδειγμα)
https://app.box.com/s/26pse7ohvxhdy2jnws69hqoswky5f800

Μετά την επενέργεια της macro-εντολής:
(Παρακάτω εικόνα παράδειγμα)
https://app.box.com/s/jblsbkqvkcivoh5pmtoq5k6uzq1knqp6

1. Εχουν δημιουργηθεί τα νέα φύλλα (ΟΝΟΜΑ1, ΟΝΟΜΑ2,ΟΝΟΜΑ3 κλπ) που περιείχε το αρχικό Φύλλο1
στα στοιχεία Α2,Α3,Α4, κλπ (βλέπε εικόνα1)
2. Μέσα σε ΟΛΑ αυτά έχει αντιγραφεί το περιεχόμενο από το Φύλλο2 (Βλέπε εικόνα 2) και
3. Έχουν διαγραφεί ΟΛΑ τα υπόλοιπα φύλλα που περιέχονται στο συγκεκριμένο βιβλίο εκτός των φύλλων, Φύλλο1, Φύλλο2 και των Φύλλο5, Φύλλο7
(Τα Φύλλο1, Φύλλο2 πάντα παραμένουν ενώ τα υπόλοιπα που επιθυμούμε να παραμείνουν
μπορούν να αλλάξουν κατ' επιθυμία ως προς το πλήθος ή προς τω αριθμώ???)
Αν όχι τότε ας γίνουν πάντα σταθερά και αυτά.


Σας ευχαριστώ πολύ για την κατανόηση
με εκτίμηση
ΕΛΕΝΗ
Απάντηση με παράθεση
Απάντηση στο θέμα


Δικαιώματα - Επιλογές
Δε μπορείτε να δημοσιεύσετε νέα μηνύματα
Δε μπορείτε να δημοσιεύσετε απαντήσεις
Δεν μπορείτε να επισυνάψετε αρχεία
Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας

Ο κώδικας ΒΒ είναι σε λειτουργία
Τα Smilies είναι σε λειτουργία
Ο κώδικας [IMG] είναι σε λειτουργία
Ο κώδικας HTML είναι εκτός λειτουργίας
Trackbacks are εκτός λειτουργίας
Pingbacks are εκτός λειτουργίας
Refbacks are εκτός λειτουργίας


Παρόμοια Θέματα

Θέμα Δημιουργός Forum Απαντήσεις Τελευταίο Μήνυμα
[VBA] Αντιγραφή φύλλου n.spiros Excel - Ερωτήσεις / Απαντήσεις 4 17-10-16 12:36
[ Πίνακες ] Πολλαπλή αντιγραφή μιάς εγγραφής στον ίδιο πίνακα dimitrisp Access - Ερωτήσεις / Απαντήσεις 14 05-10-16 22:38
[Γενικά] Αντιγραφή φύλλου σε άλλο βιβλίο jimrenoir Excel - Ερωτήσεις / Απαντήσεις 1 20-05-12 21:29
[VBA] Αυτόματη αντιγραφή φύλλου Excel σε νέο βιβλίο Tasos Excel - Tips & Tricks 0 02-04-12 17:51


Η ώρα είναι 22:01.