Πώς να διορθώσετε το σφάλμα χρόνου εκτέλεσης 1004 στο Excel
Το σφάλμα χρόνου εκτέλεσης 1004 είναι ένας κωδικός σφάλματος που σχετίζεται με τη Microsoft Visual Basic που είναι γνωστό ότι επηρεάζει τους χρήστες του Microsoft Excel. Το σφάλμα είναι γνωστό ότι είναι πιο διαδεδομένο σε Excel 2003 και Excel 2007, αν και καμία έκδοση της δημοφιλούς εφαρμογής φύλλου εργασίας της Microsoft για υπολογιστές είναι ασφαλής από την απειλή που είναι το σφάλμα χρόνου εκτέλεσης 1004. Στις περισσότερες περιπτώσεις, οι χρήστες που επηρεάζονται από αυτό το πρόβλημα βλέπουν ένα από τα δύο διαφορετικές παραλλαγές του σφάλματος χρόνου εκτέλεσης 1004. Στο σύνολο τους, οι δύο παραλλαγές του σφάλματος χρόνου εκτέλεσης 1004 διαβάστηκαν:
" Σφάλμα χρόνου εκτέλεσης '1004':
Μέθοδος αντιγραφής της κλάσης φύλλου εργασίας απέτυχε "
" Σφάλμα χρόνου εκτέλεσης '1004':
Ορισμένο από την εφαρμογή ή προσδιορισμένο από αντικείμενα σφάλμα "
![](http://aapionline.org/uploads/how/148/how-fix-run-time-error-1004-excel.jpg)
Το ακριβές μήνυμα λάθους που βλέπετε μπορεί επίσης να διαφέρει ελαφρά, σε μερικές περιπτώσεις, αν και ο κωδικός σφάλματος θα παραμείνει ο ίδιος. Ανεξάρτητα από την έκδοση του προβλήματος που αντιμετωπίζετε, ωστόσο, σχεδόν πάντα συμβαίνει κατά τη λειτουργία μιας μακροεντολής στο Excel που έχει σχεδιαστεί για την αντιγραφή φύλλων εργασίας και στη συνέχεια τοποθετήστε τα αντίγραφα στο ίδιο βιβλίο εργασίας με το αρχικό φύλλο εργασίας.
Σε αντίθεση με τα χειρότερα προβλήματα τεχνολογίας εκεί έξω, η αιτία του σφάλματος χρόνου εκτέλεσης 1004 στο Microsoft Excel είναι γνωστή. Το σφάλμα χρόνου εκτέλεσης 1004 προκύπτει όταν η μακροεντολή που εκτελείτε αντιγράφει το πρωτότυπο φύλλο εργασίας σε ένα βιβλίο εργασίας με ορισμένο όνομα που δεν αποθηκεύσατε και κλείσατε πριν εκτελέσετε τη μακροεντολή. Ένα παράδειγμα μιας τέτοιας μακροεντολής μπορεί να δει στον ακόλουθο κώδικα:
Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) Next End Sub
Δεδομένου ότι η αιτία του σφάλματος χρόνου εκτέλεσης 1004 στο πλαίσιο του Microsoft Excel είναι γνωστή, όπως και η ανάλυση. Εκτός από τη λύση αυτού του ζητήματος, αυτό που είναι επίσης διαθέσιμο στους χρήστες που επηρεάζονται από αυτό είναι ένας τρόπος αντιμετώπισης που μπορεί να χρησιμοποιηθεί σε περίπτωση που η λύση δεν λειτουργήσει ή δεν βρουν τη λύση ως βιώσιμη επιλογή.
Η λύση:
Η λύση σε αυτό το συγκεκριμένο πρόβλημα είναι απλώς να επεξεργαστείτε τον κώδικα της μακροεντολής που εκτελείτε για να την αποθηκεύετε και να κλείνετε περιοδικά το βιβλίο εργασίας στόχου ενώ παράγει αντίγραφα του φύλλου εργασίας. Ο κώδικας για μια μακροεντολή που κάνει κάτι τέτοιο θα έμοιαζε με τα εξής:
Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) 'Uncomment this code for the workaround: 'Save, close, and reopen after every 100 iterations: If iCounter Mod 100 = 0 Then oBook.Close SaveChanges:=True Set oBook = Nothing Set oBook = Application.Workbooks.Open("c:\test2.xls") End If Next End Sub
Σημείωση: Ο ακριβής αριθμός των φορών που μπορείτε να αντιγράψετε ένα φύλλο εργασίας προτού χρειαστεί να αποθηκεύσετε και να κλείσετε το βιβλίο εργασίας που αποθηκεύονται τα αντίγραφα ποικίλλει από τη μια περίπτωση στην άλλη, καθώς εξαρτάται από το μέγεθος του φύλλου εργασίας στο οποίο δημιουργείτε αντίγραφα.
Η λύση:
Όπως αναφέρθηκε προηγουμένως, υπάρχει επίσης λύση σε αυτό το συγκεκριμένο πρόβλημα. Η εργασία γύρω από αυτό το ζήτημα είναι ένα απλό θέμα να εισαγάγετε ένα νέο φύλλο εργασίας από ένα πρότυπο αντί να δημιουργήσετε ένα αντίγραφο ενός υπάρχοντος φύλλου εργασίας. Αν θέλετε να αντιμετωπίσετε αυτό το πρόβλημα, πρέπει να κάνετε τα εξής:
- Εκκινήστε το Excel .
- Δημιουργήστε ένα νέο βιβλίο εργασίας και διαγράψτε κάθε φύλλο εργασίας που περιέχει το βιβλίο εργασίας για ένα.
- Μορφοποιήστε το βιβλίο εργασίας.
- Προσθέστε τυχόν κείμενο, δεδομένα ή / και γραφήματα που θέλετε να έχετε στο πρότυπο από προεπιλογή στο μοναδικό φύλλο εργασίας που περιέχει το βιβλίο εργασίας.
- Εάν χρησιμοποιείτε το Excel 2003 ή παλαιότερα, κάντε κλικ στο Αρχείο > Αποθήκευση ως . Εάν χρησιμοποιείτε το Excel 2007 ή μεταγενέστερα, από την άλλη πλευρά, κάντε κλικ στο κουμπί Microsoft Office και στη συνέχεια κάντε κλικ στο κουμπί Αποθήκευση ως .
- Στο πεδίο Όνομα αρχείου : πληκτρολογήστε ό, τι θέλετε να καλείται το πρότυπο.
- Ανοίξτε το αναπτυσσόμενο μενού δίπλα στο πεδίο Αποθήκευση ως τύπο: και κάντε κλικ στο Πρότυπο Excel (.xlt) εάν χρησιμοποιείτε το Excel 2003 ή παλαιότερη έκδοση ή το Πρότυπο του Excel (.xltx) εάν χρησιμοποιείτε το Excel 2007 ή νεότερη έκδοση για να το επιλέξετε.
- Κάντε κλικ στην επιλογή Αποθήκευση .
- Αφού δημιουργήσετε με επιτυχία το πρότυπο, μπορείτε να το εισαγάγετε προγραμματικά χρησιμοποιώντας την ακόλουθη γραμμή κώδικα:
Sheets.Add Type: = path \ filename
Σημείωση: Στη γραμμή του κώδικα που περιγράφεται παραπάνω, το path \ filename πρέπει να αντικατασταθεί με την πλήρη διαδρομή (συμπεριλαμβανομένου του πλήρους ονόματος αρχείου) για τη θέση του προτύπου φύλλου που μόλις δημιουργήσατε.