![]() |
Application-defined or object-defined error Καλησπέρα, Χρησιμοποιώ την ακόλουθη συνάρτηση και όλα πηγαίνουν άριστα μέχρι την στιγμή που ζητώ στο Excel να κλείσει ως εφαρμογή. Το μήνυμα λάθους που μου δείχνει είναι “Application-defined or object-defined error”. Που είναι το λάθος; Ευχαριστώ εκ των προτέρων για την βοήθεια σας. Κώδικας: Sub ImportDataSpore() |
Καλησπέρα Θανάση! Δεν σε αντιληφθήκαμε και σε προσπεράσαμε:blush: Είδα τον κώδικα σου και έχω να κάνω τις εξής παρατηρήσεις. Χρησιμοποιείς συνεχώς Activate και Select. Δεν υπάρχει λόγος. Δε χρειάζεται να κάνεις αναπαράσταση των κινήσεων που θα έκανες χειροκίνητα μέσα από τη VBA. Σε πολλές περιπτώσεις δεν χρειάζεται καν να κάνεις Copy Paste προγραμματιστικά. Για παράδειγμα: η γραμμή Range("A1:A100").Value = Range("B1:B100").Value αντιγράφει τις τιμές από την περιοχή "B1:B100" στην περιοχή "Α1:Α100" χωρίς να χρειαστούν Select , Activate , Copy και Paste. Δεν διαπίστωσα κάποια συντακτικά λάθη. Η μόνη μου υποψία σε σχέση με το πρόβλημα βρίσκεται στη γραμμή Application.Run "PERSONAL.XLSB!Bold_Italic_Keywords.Bold_Italic_Ke ywords" Ωστόσο αφού μελέτησα τη ροή του κώδικα σου σου προτείνω να μελετήσεις τις τεχνικές που εφαρμόζονται στον παρακάτω (ενδεικτικό) κώδικα: Κώδικας: Option ExplicitΚαλή συνέχεια! Τάσος |
Τάσο καλησπέρα, Σε ευχαριστώ για τις εύστοχες παρατηρήσεις σου. Το πρόβλημα όμως παραμένει όταν πάω να κλείσω με την εντολή «Application.Quit» μου βγάζει το μήνυμα λάθους “Application-defined or object-defined error” σε ξεχωριστό παράθυρο αφού έχουν κλείσει πρώτα όλα τα φύλλα εργασίας Δεν έχω την δυνατότητα να δω εάν μαρκάρετε κάποια γραμμή (highlight), ποια είναι η γραμμή που δημιουργεί το πρόβλημα. Προσπάθησα με F5 (step by step) και όλα κυλούν κανονικά χωρίς πρόβλημα. Μέτα το κλείσιμο των φύλλων εργασίας και με την εντολή «Application.Quit» δημιουργείτε αυτό το σφάλμα. Εάν αφαιρέσω την εντολή «Application.Quit», δεν υπάρχει πρόβλημα αλλά δεν κλείνει το Excel apps, πρέπει να το κλείσω χειροκίνητα. Θανάσης |
Θανάση, Κάθισα, αφιέρωσα χρόνο για να σου προτείνω έναν κώδικα για να τον μελετήσεις (ενδεικτικός κώδικας) και εσύ αλλά και οι υπόλοιποι φίλοι στο φόρουμ. Δεν είμαι σίγουρος ότι μπορεί να τρέξει αφού τον έγραψα "στα τυφλά" χωρίς δοκιμή και μη γνωρίζοντας το περιβάλλον του υπολογιστή σου και τις απαιτήσεις της εφαρμογής σου. Πίστεψε με, αξίζει τον κόπο να δεις και να μελετήσεις ξανά τον κώδικα που σου πρότεινα. Μήπως ο κώδικας σου κλείνει και το βιβλίο όπου περιέχεται επομένως δεν μπορεί να τρέξει η τελευταία γραμμή αφού έχει κλείσει και το έργο VBA του βιβλίου; Αν προσέξεις στον κώδικα μου δεν κλείνω κάποια βιβλία. Απλά χρησιμοποιώ την έκφραση Application.Quit Αν δεν ισχύει το παραπάνω τότε κάτι δεν πάει καλά με το PERSONAL.XLSB σε συνδυασμό με τον κώδικα σου. Μπορείς να μας δείξεις τον κώδικα της μακροεντολής Bold_Italic_Keywords απο το PERSONAL.XLSB; Επιπλέον δοκίμασε σε ένα νέο βιβλίο με απενεργοποιημένο το PERSONAL.XLSB το παρακάτω: Κώδικας: Sub testΠεριμένουμε νέα σου. Τάσος |
Τάσο καλημέρα, Τις παρατηρήσεις σου που μου έστειλες δεν τις χρησιμοποίησα ακόμη λόγω χρόνου. Ελπίζω μέσα στο Σαββατοκύριακο να τις δω και να ασχοληθώ όπως μου προτείνεις. Ως προς το κωδικό που μου ζητάς είναι o ακόλουθος. Θα επανέλθω με τα υπόλοιπα. Ευχαριστώ Θανάσης Κώδικας: |
Τάσο καλημέρα, Και χωρίς να απενεργοποιήσω το “PERSONAL.XLSB” χρησιμοποιώντας ένα νέο module με την μακρό-εντολή «test» το πρόγραμμα κλείνει κανονικά. Δεν μπορώ να καταλάβω πού είναι το λάθος μου. Κώδικας: Sub testΕυχαριστώ Θανάσης |
Καλημέρα Θανάση! Βάλε όλα τα βιβλία που σχετίζονται με το πρόβλημα ( και το PERSONAL.XLSB ) σε ένα zip και επισύναψε τα στο φόρουμ για να μπορέσουμε να αναπαραστήσουμε το πρόβλημα και να σου δώσουμε μια λύση. Τάσος |
1 Συνημμένο(α) Τάσο σε ευχαριστώ για την απεριόριστη συμπαράσταση και βοήθεια. Δεν έχω λόγια να σ’ ευχαριστήσω. Θανάσης |
2 Συνημμένο(α) Καλησπέρα! Θανάση... από ότι είδα θέλεις να περνάς δεδομένα από το Delivery.xlsx στο INVOICE Spore.xls, μορφοποιείς τμήματα των κελιών με την συνάρτηση Bold_Italic_Keywords() (που λείπει από το PERSONAL.XLSB) και αποθηκεύεις το φύλλο σε νέο βιβλίο σε συγκεκριμένη διαδρομή και με όνομα που προέρχεται από συγκεκριμένο κελί. Το παραδειγματικό αρχείο *.xlsm που επισυνάπτω κάνει τα παραπάνω αυτόνομα χωρίς τη βοήθεια άλλων βιβλίων ,και χωρίς να χρειαστεί να ανοιχτεί το Delivery.xlsx. Δεν περιέχει εξωτερικές συνδέσεις κελιών αλλά συνδέεται με συγκεκριμένες στήλες του Delivery.xlsx με τη μέθοδο εισαγωγής εξωτερικών δεδομένων (ODBC;DSN). Τα δεδομένα αυτά βρίσκονται σε πίνακα (Αντικείμενο λίστας). Αυτό παρέχει μεγάλη ευκολία και ταχύτητα κατά τη εκτέλεση του κώδικα. Στο αρχείο αυτό χρησιμοποιείται διαφορετική μέθοδος εύρεσης τμημάτων που περιέχουν τα "Keywords" που είναι κατά 400% ταχύτερη από εκείνη που εφαρμόζεται στη μακροεντολή Bold_Italic_Keywords(). Επίσης περιέχεται κώδικας που επιτρέπει την επανασύνδεση του βιβλίο με το αρχείο εξωτερικών δεδομένων αν αυτό δεν βρεθεί στην προεπιλεγμένη διαδρομή. Έτσι, όταν ανοίξεις το αρχείο και πατήσεις κάποιο από τα κουμπιά, θα σου ζητηθεί να επιλέξεις το αρχείο που περιέχει τα δεδομένα ( πχ. το Delivery.xlsx ) για να γίνει η επανασύνδεση . Περισσότερες λεπτομέρειες μπορείς να δεις μέσα στο αρχείο. Οι τρεις τελευταίες γραμμές της μακροεντολής είναι απενεργοποιημένες. Αφού κάνεις τις δοκιμές σου και προσαρμόσεις ότι άλλο χρειαστεί μπορείς να τις ενεργοποιήσεις. Ελπίζω να μπορέσεις να το προσαρμόσεις και να το αξιοποιήσεις κατάλληλα. Καλή συνέχεια! Τάσος |
3 Συνημμένο(α) Τάσο ένα μεγάλο ευχαριστώ για την άψογη εφαρμογή. Ερωτήσεις: 1. Πώς θα μπορέσω να εσωκλείσω το όνομα του πλοίου, το Order Code, Order ID χωρίς να χρησιμοποιήσω εξωτερικές συνδέσεις κελιών (συνημμένο). 2. Το αρχείο να σώζεται με το όνομα του κελιού Α7 και Β9 και όχι μόνο Α7. 3. Παρατήρησα όταν εισάγει τα δεδομένα από το «Delivery.xlsx» προσθέτει στο τέλος ένα επιπλέον διάστημα “space”. 4. Εκ παραδρομής στο τέλος το σύνολο είναι «Total ammount” αντί «Total Amount». 5. Η κολόνα Β παρόλο που είναι “wrap text” δεν αυξομειώνεται το ύψος και πρέπει να γίνει χειροκίνητα. 6. Παρατήρησα επίσης σε κάποιες λέξεις κλειδιά τις κάνει bold and italic και άλλες φορές όχι (item 3, 4). Μία παράκληση Τάσο, επειδή καταλαβαίνω τον κόπο και τον χρόνο που κατανάλωσες και καταναλώνεις θα ήθελα πραγματικά να σε ευχαριστήσω προσωπικά και όχι μόνο μέσω του φόρουμ. Θανάσης |
| Η ώρα είναι 09:50. |
Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.