![]() |
Αυτόματη δημιουργία και ονομασία φύλλων. Καλησπέρα σε όλους. Κάθε μήνα, έχω ένα βιβλίο που περιλαμβάνει ένα κεντρικό φύλλο και τόσα φύλλα όσες είναι οι εργάσιμες ημέρες του μήνα, συν τόσα φύλλα, όσα τα Σάββατα του μήνα. Η ερώτησή μου είναι η εξής: Μπορώ να δημιουργώ, αυτόματα(να μην ανοίγω φύλλα ένα-ένα και να μην ονομάζω τα φύλλα, ένα-ένα) όσα φύλλα χρειάζομαι κάθε μήνα, δίνοντάς τους ταυτόχρονα την ονομασία της κάθε ημέρας;(020412,030412,040412 κλπ κλπ); Όπως όλοι γνωρίζετε, είμαι τσακωμένος και δεν μιλάω με την VBA.:023:, για αυτό αδυνατώ να δημιουργήσω μόνος μου κάτι τέτοιο, που θεωρώ ότι δεν μπορεί να γίνει με συναρτήσεις. Ή, κάνω λάθος;:wink: |
1 Συνημμένο(α) Καλησπέρα φίλε μου! Αφού δεν θέλεις να χρησιμοποιείς VBA, τότε χρησιμοποίησε VBS. Κατέβασε το συνημμένο αρχείο, άλλαξε την κατάληξη του σε .vbs και εκτέλεσε το κάνοντας διπλό κλικ πάνω του. Θα σου δημιουργήσει ένα νέο αρχείο Excel με τόσα φύλλα όσες και οι ημέρες του μήνα που θα σου ζητηθεί (Εκτός τις Κυριακές). Με την ίδια μέθοδο (με κάποιες μικροαλλαγές στον κώδικα) μπορείς να ανοίξεις το βιβλίο που περιέχει το μορφοποιημένο φύλλο μιας ημέρας και να το αντιγράψεις όσες φορές χρειαστεί. Μπορείς να το ανοίξεις με Notepad για να δεις τον κώδικα που περιέχει. Τα λέμε... Τάσος |
1 Συνημμένο(α) Καλησπέρα κι από 'μένα Φίλε Λευτέρη αν και ασχολούμαι με VBA λίγο καιρό τώρα και προσπαθώ να διαβάζω όποτε έχω χρόνο Ρίξε μια ματιά να δεις ένα άλλο τρόπο πολύ εύκολο και χρηστικό ως προς τις επιλογές των φύλλων που θα δημιουργηθούν Τελικά η VBA είναι πολύ καλό εργαλείο...:thumbup1: Ευχαριστώ τον Τάσο για τις οδηγίες του στο να μπω στο κλίμα της VBA και να την καταλάβω |
Καλησπέρα σε όλους. Συγνώμη, αλλά μετά από 15 ώρες στην δουλειά, δεν είμαι και στην καλύτερη δυνατή θέση, να κατανοήσω, σωστά... Τάσο μου, τι σε κάνει να πιστεύεις ότι VBA ή VBE, κάνει γιά μένα διαφορά, Φίλε μου;; Δεν καταλαβαίνω, ούτε τον κώδικα, ούτε που πρέπει(και πώς) να τον βάλω γιά να δουλέψει!!:icon_n1: Βέβαια ... Παράθεση:
Φίλε Σπύρο. Πρώτα από όλα, ευχαριστώ για το XLS....Μετά γιά την διάθεση, να δώσεις λύση. Ψιλοζαλίστικα λίγο(όπως είπα, δεν είμαι καθόλου ξεκούραστος). Ένα πράγμα πού μου έκανε,όμως εντύπωση, είναι ότι με τα βελάκια, αλλάζουν οι μήνες, τα χρόνια, δεν αλλάζουν.! Τα υπόλοιπα(συγχωρήστε με), θα τα δούμε αύριο το πρωί. Καλό βράδυ σε όλους.:byebye: |
Λευτέρη το ξανά κατέβασα από το φόρουμ για να το δω και τα βελάκια δουλεύουν OK! Σε κάθε περίπτωση κάνε ένα δεξί κλικ στο κουμπί και έλεγξε το πάλι Καλή ξεκούραση τα λέμε το πρωί |
1 Συνημμένο(α) Καλημέρα σε όλους. Τάσο μου, αλήθεια δεν καταλαβαίνω(και δεν έχω κανένα πρόβλημα να το πώ), τίποτα. Το αρχείο ανοίγει και στο σημειωματάριο, βλέπω τον κώδικα. Οκ! Μετά τι κάνω; Επίσης με την διόρθωση που έκανες στο μήνυμά σου, κατάλαβα, πως έτσι όπως σας το παρουσίασα, το θέμα, σας παιδεύω, χωρίς αντίκρυσμα. Από μήνα σε μήνα η μορφοποίηση των φύλλων μου, είναι ίδια. Δηλαδή, υπάρχει έτοιμο βιβλίο(που χρησιμοποιείται σαν πρότυπο) και κάθε μήνα πρέπει να του αλλάζω το όνομα των φύλλων, δίνοντάς τους το όνομα της κάθε ημέρας, γιά να επικοινωνούνε, με το κεντρικό φύλλο, που βάσει της ημερομηνίας, παίρνω διάφορα στοιχεία. Άρα, ΔΕν χρειάζομαι δημιουργία κενών φύλλων, αλλά Μετανομασία των υπάρχοντων, ανάλογα με τον μήνα και το έτος που επιλέγω στο κεντρικό φύλλο(Π.χ, στο Α1) Σπύρο, δεν ξέρω μήπως φταίει ο υπολογιστής μου, αλλά ξεκινώντας, αργεί πολύ να ανοίξει και μετά, γιά αρχή, παρατηρώ αυτα. Δεν καταλαβαίνω πω΄ς επιλέγω ποια(ΚΕΛΙΆ) θέλω και ποια δεν θέλω Πατώντας το Create sheet(Tα βελάκια με αλλαγή χρονιάς, δεν μου δουλεύουν-Επιμένω), εμφανίζεται αυτό το μήνυμα. ActiveSheet.Name = cell.Value Μετά,, έχει δημιουργήσει, ένα φύλλο… Και βέβαια να πώ, πως σε καμία περίπτωση δεν θα ήθελα να κλέψω πολύτιμο δημιουργικό χρόνο, από κανέναν σας, προσπαθώντας να βοηθήσετε. Γιά όποιον έχει χρόνο και θέλει να ασχοληθεί. Άλλωστε θέμα βελτίωσης είναι. |
1 Συνημμένο(α) Λευτέρη κατέβασα το αρχείο και όλα δουλεύουν καλά στο δικό μου χωρίς λάθος ή μηνύματα λάθους δες πάλι τις σημειώσεις μέσα στο φύλλο:coffee2: |
Σπύρο, άνοιξα το τελευταίο συνημμένο και πράγματι δουλεύει κανονικά. Το πρώτο ακόμη και τώρα κάνει τα ίδια..... Η δουλειά σου, σαν αποτέλεσμα(δεν έχω γνώσεις να το κρίνω τεχνικά, δηλαδή, αν θα μπορούσε να γίνει με άλλον τρόπο, κλπ, κλπ),απαντάει ακριβώς, σε αυτό που αρχικά ρώτησα. Σε ευχαριστώ πολύ για τον χρόνο και τον κόπο που διέθεσες. |
Να 'σαι καλά σ' ευχαριστώ κι εγώ |
1 Συνημμένο(α) Καλησπέρα σε όλους! Λευτέρη μου για να δημιουργήσεις οποιονδήποτε αυτοματισμό στην εφαρμογή σου θα χρειαστείς αναγκαστικά ένα πρόγραμμα. Το πρόγραμμα αυτό μπορεί να είναι γραμμένο σε οποιαδήποτε γλώσσα προγραμματισμού που υποστηρίζει αντικείμενα COM. Όπως είπε και ο Σπύρος, η VBA είναι πολύ καλή, σου λύνει τα χέρια και σε απαλλάσσει από τις χρονοβόρες εργασίες στα προγράμματα του Office. Ή λοιπόν χρησιμοποιείς την VBA που παρέχεται στα προϊόντα του Microsoft Office, ή χρησιμοποιείς VBScript ( VBS ) που έχει σαν βάση την VB με τη διαφορά ότι ο κώδικας της δεν χρειάζεται να ενσωματωθεί σε μια εφαρμογή για να εκτελεστεί. Αρκεί να γράψει κανείς τον κώδικα σε ένα αρχείο κειμένου και να αλλάξει την κατάληξη του αρχείου από .txt σε .vbs H VBScript υπάρχει σε κάθε κάθε υπολογιστή από την έκδοση Windows 1998. Γενικές πληροφορίες για την VB Script μπορεί να δει κανείς εδώ: VBScript - Wikipedia, the free encyclopedia. Πρότεινα αυτή τη λύση επειδή δεν χρειάζεται να ενσωματωθεί σε αρχείο για να εκτελεστεί. Εσύ απλά θα πρέπει να μετονομάσεις το αρχείο από .txt σε .vbs για να μπορέσεις να το εκτελέσεις. Έτσι διατηρείς το αρχείο σου "VBA - free". Επισυνάπτω ένα παράδειγμα για με βάση το βιβλίο του Σπύρου. Έχω μετονομάσει το φύλλο "ΚΕΝΤΡΙΚΟ" σε "template". Αυτό το φύλλο θα περιέχει τις μορφοποιήσεις, τύπους, και τιμές που θα είναι κοινές στα φύλλα που θα προστεθούν προγραμματιστικά στο βιβλίο και μπορεί να αποκρυφτεί. Μπορεί λοιπόν κανείς να προσθέσει προγραμματιστικά τα φύλλα για τον μήνα και το έτος που θα του ζητηθούν που θα είναι αντίτυπα του φύλλου "template" με χρήση του ενσωματωμένου κώδικα VBA ή με χρήση του αρχείου AddWorkSheetsToExcel.vbs (επισυνάπτεται). Το δεύτερο για να λειτουργήσει, θα πρέπει να βρίσκεται στον ίδιο φάκελο με το αρχείο Main.xls (επισυνάπτεται). Καλή συνέχεια! Τάσος |
Τάσο μου, ανοίγω το Excel, που περιέχει μόνο το φύλλο Τemplate, άδειο. Σωστά; Προσπαθώντας, να ανοίξω τό άλλο αρχείο, παίρνω ένα μήνυμα, με τίτλο. Windows Script Host. Σφάλμα: Δεν ήταν δυνατήν η εύρεση του C/Documents and Settings/...Local....../Main.xls. Eλέγξτε την ορθογραφία του......μπλά-μπλά-μπλά........... Έσωσα το Main.xls.και σε άλλο φάκελλο, αλλά τα ίδια. Τι κάνω λάθος; |
Λευτέρη, το *.vbs πρέπει να βρίσκεται στον ίδιο φάκελο με το Main.xls για να λειτουργήσει. Επίσης μέσα στο βιβλίο Main.xls υπάρχει ήδη κώδικας VBA που κάνει την ίδια δουλειά. Για να εκτελέσεις αυτόν τον κώδικα VBA, άνοιξε το βιβλίο Main.xls, πάτησε ALT+F8 και στο διάλογο ου θα εμφανιστεί πάτησε το κουμπί "Εκτέλεση" για να εκτελέσεις τη μακροεντολή "CreateWorkSheets". Το επίπεδο ασφάλειας των μακροεντολών της εφαρμογής πρέπει να είναι στο "μεσαίο" ή "χαμηλό" για να λειτουργήσει ο κώδικας VBA του βιβλίου. Σε αντίθεση με την Excel, το *.vbs δεν επηρεάζεται από τη ρύθμιση ασφάλειας των μακροεντολών επειδή χρησιμοποιεί το αντικείμενο αυτοματισμού της Excel. Δοκίμασε και τα λέμε. Τάσος |
Καλησπέρα-Καλημέρα. Παράθεση:
Λέω λοιπόν πως δεν μου ανοίγει καθόλου το αρχείο και μου βγάζει το λάθος που είπα στο προηγούμενο μήνυμά μου. |
1 Συνημμένο(α) Καλημέρα στην παρέα Όπως είπα στην αρχή τώρα μαθαίνω τα "τερτίπια" της VBA Μία λέξη έπρεπε να αλλάξει στον κώδικα για να απαλλαγούμε από όλους αυτούς τους βασανιστικούς υπολογισμούς στο φύλλο ( αντί Value Έγινε Text) Έτσι έχουμε την τελική έκδοση απλή και χρηστική:icon_hihi: |
Καλημέρα στην παρέα Σπύρο, σε συγχαίρω για τα πετυχημένα βήματα στην VBA. Αν θέλουμε τα προστιθέμενα φύλλα να είναι ίδια με το «ΚΕΝΤΡΙΚΟ» θα μπορούσε να χρησιμοποιηθεί παρόμοιος κώδικας, όπως: Κώδικας: Sub sheetcreator2() |
Καλημέρα σε όλους. Φιλε Σπύρο, Παράθεση:
Μόνο μία ερώτηση γιά να μην έχω κενά! Στο φύλλο Κεντρικό, τα στοιχεία Data στα κελιά και οι επικεφαλίδες με Column, Είναι για να γεμίσουμε απλά τα κελια και μόνον. Έτσι; Σε ευχαριστώ και πάλι, πολύ για τον κόπο και τον χρόνο σου. |
Αυτή είναι η απάντησή μου, στον Φίλο Σπύρο, στο Post#8 και είναι σωστή. . Παράθεση:
..Βλέποντας την απάντηση του Γιώργου, που ουσιαστικά είναι ίδια με αυτή του Τάσου στο post#2, Παράθεση:
Παράθεση:
Αυτό το φύλλο, λοιπόν είναι εκείνο που πρέπει να αντιγραφεί όσες φορές του ορίσουμε απο το Φύλλο, ΕΠΙΛΟΓΕΣ και τα φύλλα που δημιουργούνται να παίρνουν την ονομασία των ημερών, που έχουμε επιλέξει. Μήπως εδώ που φτάσαμε,ελπίζω, χωρίς να κάνω κατάχρηση του χρόνου και του κόπου σας, μπορούμε να κάνουμε και αυτό;; |
Πως ονομάζεις το φύλλο που θέλεις να αντιγράφετε πολλές φορές γράψε το όνομά του ακριβώς |
Οκ!...Το πήρα το μήνυμα, Σπύρο μου. Κουράστηκες....Δικαιολογημέ να...,νομίζω. Ας το αφήσουμε καλύτερα....Σε ευχαριστώ πολύ. Βοήθησες πολύ. Το θέμα, τελείωσε. Καλό υπόλοιπο Κυριακής, σε όλους. |
Λευτέρη το ακριβώς που έγραψα δεν υπονοεί κάτι απλά πρέπει να είναι ακριβώς το όνομα του για να μην κάνει λάθος ο κώδικας ακόμα κι ένας τόννος παίζει ρόλο ή ένα κόμμα κλπ έλα πες δεν με κουράζεις... |
1 Συνημμένο(α) Καλησπέρα στην παρέα Λευτέρη το αρχείο που επισυνάπτω αποτελεί μια τροποποιημένη έκδοση της λύσης που πρότεινε ο Σπύρος. Ονομάζεται «AddSheetstoWbFinal2.xls» και περιέχει μόνο ένα φύλλο το «ADD_SHEETS», που είναι σχεδόν ίδιο με αυτό που πρότεινε ο Σπύρος. Το φύλλο αυτό περιέχει τον αναγκαίο κώδικα VBA για την προσθήκη φύλλων στο βιβλίο ίδιων με κάποιο υπάρχον (ΕΠΙΛΟΓΕΣ). Για να μπορέσεις να το χρησιμοποιήσεις θα πρέπει να το μεταφέρεις στο βιβλίο που έχεις τα φύλλα «ΚΕΝΤΡΙΚΟ», «ΕΠΙΛΟΓΕΣ» και οποιαδήποτε άλλα, εκτός αυτών που θα προσθέτονται αυτόματα. Αν υποθέσουμε ότι το βιβλίο σου ονομάζεται «ΛΕΥΤΕΡΗΣ.xls» η μεταφορά του φύλλου μπορεί να γίνει, με τα ακόλουθα βήματα: 1) Ανοίγουμε και τα δύο βιβλία (ΛΕΥΤΕΡΗΣ.xls, AddSheetstoWbFinal2.xls). 2) Με ενεργό το AddSheetstoWbFinal2.xls κάνουμε δεξί κλικ στην καρτέλα (Tab) του φύλλου «ADD_SHEETS» και κλικ στην επιλογή «Μετακίνηση ή Αντιγραφή» του μενού συντόμευσης. 3) Στο πλαίσιο διαλόγου επιλέγουμε το βιβλίο «ΛΕΥΤΕΡΗΣ.xls» και το φύλλο του πριν από το οποίο θα μετακινηθεί (αντιγραφεί) το «ADD_SHEETS» και τσεκάρουμε και το πλαίσιο «Δημιουργία αντιγράφου». 4) Κάνουμε κλικ στο OK όσες φορές χρειαστεί για να κλείσουν τα πλαίσια διαλόγου. 5) Αποθηκεύουμε το αρχείο «ΛΕΥΤΕΡΗΣ.xls», που περιέχει και το φύλλο «ADD_SHEETS». Μετά την προσθήκη του φύλλου «ADD_SHEETS» στο βιβλίο «ΛΕΥΤΕΡΗΣ.xls» όλη η εργασία θα γίνεται από αυτό. Λευτέρη, αν αντιμετωπίσεις κάποιο πρόβλημα ανέβασε το αρχείο σου για να του προσθέσουμε τον αναγκαίο κώδικα. Σπύρο ο κώδικας φαίνεται λίγο διαφορετικός επειδή πρόσθεσα κάποιους ελέγχους. Φιλικά/Γιώργος |
1 Συνημμένο(α) Καλησπέρα. Βρισκόμενος συνήθως, στην αντίθετη πλευρά, αυτή εκείνου που απαντάει, κατανοώ και σέβομαι απόλυτα τον κόπο και τον χρόνο, τόσο τον δικό σου Γιώργο, όσον και εκείνο του Σπύρου και ξέρω πολύ καλά πως νοιώθει εκείνος που προσπαθεί να δώσει λύση σε κάποιον. Αυτός είναι και ο λόγος που συνεχίζω το θέμα. Αισθάνομαι ομολογουμένως, όμως, φοβερά άβολα. Γιώργο, σωστά κατάλαβες το ζητούμενο. Αυτό είναι. Δημιούργησα, ένα μικρό δείγμα, αυτού που θέλω και το επισυνάπτω. Το μήνυμα, λάθους, που μου βγαίνει, λέει. Παράθεση:
|
1 Συνημμένο(α) Καλησπέρα Λευτέρη πιστεύω ότι όλοι θέλουμε να βρεθεί λύση στο πρόβλημα, οπότε δεν υπάρχει λόγος να αισθάνεσαι άβολα. Το αρχείο που ανέβασες δε λειτουργεί στον υπολογιστή μου και μάλιστα βγάζει ένα περίεργο μήνυμα ότι υπάρχει πρόβλημα στο φάκελο που είναι αποθηκευμένο. Μετέφερα τα φύλλα για τα οποία ενδιαφέρεσαι στο αρχείο που περιέχει το φύλλο «ADD_SHEETS» και ονόμασα το νέο αρχείο «ΛΕΥΤΕΡΗΣ3.xls». Είναι το αρχείο που επισυνάπτω. Το αρχείο αυτό λειτουργεί κανονικά στον υπολογιστή μου. Θα πρέπει να το δοκιμάσεις και στο δικό σου. Πάντως στο φύλλο «Δείγμα», που θέλεις να αντιγράφεται δεν είδα τύπους. Έτσι και αν ακόμα το αρχείο λειτουργεί στον υπολογιστή σου, μάλλον δε θα σου είναι χρήσιμο. Φιλικά/Γιώργος |
Γιώργο, πιθανά να υπάρχει πρόβλημα στον υπολογιστή μου. Θα το τσεκάρω και αύριο το πρωί στη δουλειά. Το αρχείο που μου έστειλες(το τελευταίο),ανοίγει κανονικα και δουλεύει, κανονικά. Η σειρά μόνο, θέλω να είναι διαφορετική. Δηλαδή, τα νέα φύλλα, να μπαίνουν μεταξύ του φύλλου Start και End και το Δείγμα στο τέλος(Μετά το End) Βέβαια, πάνω από όλα είναι να καταφέρω στον υπολογιστή μου, να δημιουργήσω τα φύλλα μου, όπως μου περιέγραψες στο προηγούμενο Post σου. Ευχαριστώ πολύ.. |
1 Συνημμένο(α) Καλημέρα Αλλάζοντας κάτι ( τον τρόπο αντιγραφής) στον κώδικα του Γιώργου τώρα έχεις το ζητούμενο Τα φύλλα που προστίθενται είναι αντίγραφα του "Δείγμα" με ονομασία των ημερών που επιλέγεις Και προστίθενται ανάμεσα στα "Start" & "End" To Original "Δείγμα" παραμένει στο Τέλος. Χρωμάτισα την ετικέτα του "Δείγμα" για να φανεί καλύτερα Αν θες την αλλάζεις Σημείωση Τα αντεγραμμένα φύλλα έχουν όλες τις ιδιότητες του Original που σημαίνει ότι ακόμα και το χρώμα τις ετικέτας του φύλλου θα αντιγραφεί ΥΓ Ο κώδικας είναι πλέον σε Module και οχι στο Φύλλο |
Καλημέρα σε όλους. Σπύρο, άνοιξα το συνημμένο σου και δουλεύει ακριβώς:thumbup1: όπως ζήτησα. Θα το τοποθετήσω και θα το τρέξω,στο κανονικό βιβλίο μου και θα σας ενημερώσω, οπωσδήποτε. Ευχαριστώ πολύ και εσένα και τον Γιώργο, για την υπομονή σας, τον χρόνο και τον κόπο σας. Ευχαριστώ φυσικά και τον Φίλο μου τον Τάσο, για τις προτάσεις του, που μακάρι να ήμουν ικανός να μπορούσα να τις "ανοίξω" και φυσικά να τις καταλάβω. |
1 Συνημμένο(α) Καλημέρα Λευτέρη! Η πρόταση μου δεν διαφέρει και πολύ από τις προτάσεις του Σπύρου και του Γιώργου ως προς το αποτέλεσμα. Απλά δεν χρειάζεται να ενσωματωθεί σε βιβλίο Excel και μπορεί να χρησιμοποιηθεί για όποιο βιβλίο θελήσει κανείς. Θα το κάνω όσο μπορώ πιο απλό για όποιον θελήσει κάτι αντίστοιχο περιγράφοντας τα βήματα δημιουργίας αυτής της πρότασης:
Εκτελούμε το αποθηκευμένο αρχείο με διπλό κλικ. Κατά τη ροή του προγράμματος θα μας ζητηθούν τα παρακάτω:
Κώδικας: Option Explicit |
| Η ώρα είναι 22:11. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.