| 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 στις 10:38. |
« Προηγούμενο Θέμα
|
Επόμενο Θέμα »
| |
| ||||
| Θέμα | Δημιουργός | Forum | Απαντήσεις | Τελευταίο Μήνυμα |
| [VBA] Αντιγραφή φύλλου | n.spiros | Excel - Ερωτήσεις / Απαντήσεις | 4 | 17-10-16 12:36 |
| [Excel07] Αντιγραφη κελιών σε νεο βιβλιο εργασιας | sotisanis | Excel - Ερωτήσεις / Απαντήσεις | 0 | 05-04-15 22:31 |
| [VBA] VBA - Πολλαπλή Αντιγραφή ΦΥΛΛΟΥ Excel | ΕΛΕΝΙΤΣΑ | Excel - Ερωτήσεις / Απαντήσεις | 8 | 20-03-15 14:15 |
| [VBA] Αντιγραφή γραμμής σε νέο βιβλίο | sotisanis | Excel - Ερωτήσεις / Απαντήσεις | 1 | 29-12-13 23:24 |
| [Γενικά] Αντιγραφή φύλλου σε άλλο βιβλίο | jimrenoir | Excel - Ερωτήσεις / Απαντήσεις | 1 | 20-05-12 21:29 |
Η ώρα είναι 10:36.



Θεματικός Τρόπος
