Excel - Tips & Tricks Συμβουλές και κόλπα για χρήστες της Microsoft Excel. Παρακαλούμε μην εισάγετε εδώ ερωτήσεις! |
![]() |
| Εργαλεία Θεμάτων | Τρόποι εμφάνισης |
#1
| ||||
| ||||
![]()
Όταν η αντιγραφή ενός υπολογιστικού φύλλου σε νέο βιβλίο εργασίας αποτελεί μέρος ενός αυτοματισμού, ο παρακάτω κώδικας μπορεί να βοηθήσει: Σενάριο:
Κώδικας: Option Explicit Sub ExportWorksheet() Dim wb As Workbook, wbName As String Const xlsxPath = "C:\foldername\" ' Η διαδρομή του φακέλου If Dir(xlsxPath, vbDirectory) = vbNullString Then ' ειδοποιεί τον χρήστη ότι ο φάκελος δεν υπάρχει MsgBox "Ο φάκελος '" & xlsxPath & "' δεν υπάρχει!" & vbLf & _ "Θα πρέπει να τον δημιουργήσετε για να συνεχίσετε.", vbExclamation Exit Sub 'τερματίζει τη διαδικασία Else If Trim(Range("A1")) <> vbNullString Then ' αν το κελί A1 δεν είναι κενό wbName = Range("A1") & _ " (" & Format(Now, "dd-mm-yy hh-mm") & ")" & ".xlsx" 'δημιουργεί το όνομα με βάση την τιμή του κελιού A1 ' διαφορετικά (αν το κελί A1 είναι κενό) Else 'δημιουργεί το όνομα με βάση τον τρέχοντα μήνα wbName = Format(Now, "mmmm") & _ " (" & Format(Now, "dd-mm-yy hh-mm") & ")" & ".xlsx" End If End If 'αν το όνομα του αρχειου προς εξαγωγή ήδη υπάρχει τότε με εμφάνιση μηνύματος επιλογής (Ναι/Όχι) 'αποφασίζεται από στο χρήστη η αντικατάσταση του υπάρχοντος αρχείου If Dir(xlsxPath & wbName, vbDirectory) <> vbNullString Then If MsgBox("Το αρχείο '" & wbName & "' υπάρχει ήδη στο φάκελο '" & xlsxPath & "'" & vbLf & _ "Θέλετε να το αντικαταστήσετε;", vbQuestion + vbYesNo + vbDefaultButton2) = vbYes Then '******αν ο χρήστης στο μήνυμα επιλογής (Ναι/Όχι) επιλέξει "Ναι" 'αποτρέπει τη διακοπή εκτέλεσης του κώδικα αν προκληθεί σφάλμα. On Error Resume Next 'διαγράφει το αρχείο Kill xlsxPath & wbName ' αν προκληθεί σφάλμα με το νούμερο 70 (δεν επιτρέπεται η πρόσβαση στο αρχείο προς διαγραφή) If Err = 70 Then MsgBox "Δεν είναι δυνατή η αντικατάσταση του αρχείου '" & wbName & "'" & vbLf & _ "επειδή χρησιμοποιείται από κάποιο πρόγραμμα ή χρήστη." _ & vbLf & "Η διαδικασία θα διακοπεί.", vbInformation Exit Sub ' αν προκληθεί οποιοδήποτε άλλο σφάλμα ElseIf Err <> 0 Then MsgBox "Σφάλμα " & Err & vbLf & Err.Description, vbExclamation 'τερματίζει τη διαδικασία Exit Sub End If Else '******αν ο χρήστης στο μήνυμα επιλογής (Ναι/Όχι) επιλέξει "Όχι" ή κλείσει το μήνυμα Exit Sub 'τερματίζει τη διαδικασία End If End If With Application 'διακόπτει την ανανέωση της οθόνης μέχρι το τέλος της διαδικασίας .ScreenUpdating = False 'δεν εμφανίζει το παράθυρο στην μπάρα των Windows (δεν ισχύει για παράθυρα που είναι ήδη ανοιχτά) .ShowWindowsInTaskbar = False 'διακόπτει τον αυτόματο υπολογισμό της εφαρμογής .Calculation = xlCalculationManual 'wksValues= το κωδικό όνομα του φύλλου προς αντιγραφή "Μετρήσεις" 'Συνιστάται να καλούμε τα φύλλα που μας είναι γνωστά κατά τη σχεδίαση της εφαρμογής 'με το κωδικό τους όνομα. Έτσι, τυχόν μετονομασία ή μετακίνηση του φύλλου δεν θα έχει 'επιπτώσεις στην εκτέλεση του κώδικα αφού τό κωδικό του όνομα παραμένει ως έχει. 'Μετονομάζουμε λοιπόν στον Project Explorer το φύλλο "Sheet1(Μετρήσεις) σε wksValues 'Καλό είναι να κάνουμε το ίδιο και με τα υπόλοιπα φύλλα που εμπλέκονται στο έργο VBA wksValues.Copy 'Δημιουργεί αντίγραφο του φύλλου σε νέο βιβλίο Set wb = ActiveWorkbook 'αποθηκεύει το βιβλίο στην προεπιλεγμένη διαδρομή wb.SaveAs Filename:=xlsxPath & wbName, FileFormat:=xlOpenXMLWorkbook 'κλείνει το νέο βιβλίο wb.Close SaveChanges:=False .ShowWindowsInTaskbar = True 'επαναφέρει τη ρύθμιση εμφανίσης των παραθύρων της εφαρμογής στην μπάρα των Windows .Calculation = xlCalculationAutomatic 'επαναφέρει τον αυτόματο υπολογισμό της εφαρμογής .ScreenUpdating = True 'επιτρέπει/επαναφέρει την ανανέωση της οθόνης. 'αν για κάποιο λόγο έχει προκληθεί σφάλμα κατά την αποθήκευση If Err <> 0 Then MsgBox "Σφάλμα " & Err & vbLf & Err.Description, vbExclamation Else ' Μήνυμα επιτυχούς δημιουργίας του αρχείου MsgBox "Το αρχείο '" & wbName & "' δημιουργήθηκε στο φάκελο '" & _ xlsxPath & "'", vbInformation End If End With End Sub
__________________ Ms-Office Development Team Ανάπτυξη επαγγελματικών εφαρμογών Τελευταία επεξεργασία από το χρήστη Tasos : 04-04-12 στις 11:38. |
![]() |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
[VBA] Αντιγραφή φύλλου | n.spiros | Excel - Ερωτήσεις / Απαντήσεις | 4 | 17-10-16 13:36 |
[Excel07] Αντιγραφη κελιών σε νεο βιβλιο εργασιας | sotisanis | Excel - Ερωτήσεις / Απαντήσεις | 0 | 05-04-15 23:31 |
[VBA] VBA - Πολλαπλή Αντιγραφή ΦΥΛΛΟΥ Excel | ΕΛΕΝΙΤΣΑ | Excel - Ερωτήσεις / Απαντήσεις | 8 | 20-03-15 15:15 |
[VBA] Αντιγραφή γραμμής σε νέο βιβλίο | sotisanis | Excel - Ερωτήσεις / Απαντήσεις | 1 | 30-12-13 00:24 |
[Γενικά] Αντιγραφή φύλλου σε άλλο βιβλίο | jimrenoir | Excel - Ερωτήσεις / Απαντήσεις | 1 | 20-05-12 22:29 |
Η ώρα είναι 14:37.