VBA Insert Picture Bug - Excel Συμβουλές

Πίνακας περιεχομένων

Έπρεπε να έχω μια μακροεντολή Excel να εισαγάγει μια εικόνα στο Excel. Ενεργοποίησα τη συσκευή εγγραφής μακροεντολών, έβαλα την εικόνα. Αλλά όταν χρησιμοποίησα αυτόν τον εγγεγραμμένο κώδικα, η εικόνα δεν θα εμφανιστεί σε κανέναν άλλο υπολογιστή. Αντ 'αυτού, παίρνω ένα κόκκινο X όπου πρέπει να είναι η εικόνα.

Ο κωδικός που χρησιμοποιήθηκε για εργασία στο Excel 2007 ή παλαιότερη. Αλλά κάτι άλλαξε στο Excel 2010. Όταν εκτελείτε κώδικα στο ActiveSheet.Pictures.Insert, το Excel * δεν * εισάγει την εικόνα. Αντ 'αυτού, εισάγει έναν σύνδεσμο προς την εικόνα.

Φυσικά, όταν εκτελείτε τον κώδικα στον υπολογιστή σας, φαίνεται ότι όλα λειτουργούσαν. Εμφανίζεται η εικόνα.

Φαίνεται ότι η μακροεντολή λειτούργησε.

Αλλά όταν κάποιος ανοίγει το βιβλίο εργασίας σε άλλο υπολογιστή, λαμβάνει ένα κόκκινο X και ένα μήνυμα ότι η εικόνα μπορεί να έχει μετακινηθεί ή να μετονομαστεί.

Κόκκινο X αντί για την εικόνα

Λοιπόν, φυσικά η εικόνα δεν βρίσκεται στον υπολογιστή του Διαχειριστή μου. Δεν ζήτησα από το Excel να δημιουργήσει έναν σύνδεσμο προς την εικόνα. Ζήτησα από το Excel να εισαγάγει την εικόνα. Αλλά ο καταγεγραμμένος κώδικας εισάγει έναν σύνδεσμο προς την εικόνα.

Η λύση είναι να μεταβείτε σε διαφορετικό κώδικα. Χρησιμοποιώντας το Shapes.AddPicture, μπορείτε να καθορίσετε LinkToFile:=msoFalse. Εδώ είναι ο κωδικός για χρήση:

Sub HowToInsertPicture() ' This code fails in 2010 or newer ' ActiveSheet.Pictures.Insert( _ ' "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp").Select NewFN = "C:UsersBillDesktopPhotoPrintAll RocketaWalg180422-3.jpg.webp" ActiveSheet.Shapes.AddPicture(Filename:=NewFN, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=1, Top:=1, Width:=140, Height:=195).Select End Sub

Δες το βίντεο

Μεταγραφή βίντεο

Μάθετε το Excel από το Podcast, επεισόδιο 2214: Πραγματικά ενοχλητικό σφάλμα VBA όταν προσπαθείτε να εισαγάγετε μια εικόνα.

Καλώς. Λοιπόν, hei, αυτό άρχισε να συμβαίνει στο Excel 2010. Μόλις το έκανα ξανά πρόσφατα.

Θα εισαγάγω λοιπόν μια εικόνα σε αυτό το βιβλίο εργασίας, αλλά θέλω να ηχογραφήσω αυτήν την ενέργεια, ώστε να μπορώ να την κάνω αυτόματα. Προβολή, μακροεντολές, εγγραφή μακροεντολής, HowToInsertAPicture. Τέλειος. Και απλώς πρόκειται να εισαγάγω μια εικόνα εδώ: Εικονογραφήσεις, Εικόνες, ας επιλέξουμε μία από τις φωτογραφίες πυραύλων μας και Εισαγωγή. Εντάξει, σταματήστε την εγγραφή. Πανεμορφη. Τώρα, θα το ξεφορτωθώ. Θέλω να ρίξω μια ματιά στις μακροεντολές, οπότε Alt + F8, HowToInsertAPicture, Edit, και λέει ότι είναι αυτό: ActiveSheet.Pictures.Insert και στη συνέχεια η διαδρομή προς την εικόνα. Καλώς. Ναι, αυτό ακούγεται καλό. Και, στην πραγματικότητα, θα πρέπει να μπορούμε να το τρέξουμε αυτό. Έτσι Alt + 8, HowToInsertAPicture και Run, και έχουμε την εικόνα - είναι όμορφη. Μέχρι να αποθηκεύσω αυτό το βιβλίο εργασίας και να σας αφήσω να το κατεβάσετε ή να το στείλετε σε κάποιον άλλο, και στη συνέχεια η εικόνα δενΔεν εμφανίζονται καθόλου - το μόνο που έχω είναι ένα κόκκινο Χ που λέει, "Γεια, δεν μπορούμε πλέον να βρούμε την εικόνα. Όπως τι εννοείς δεν μπορείς να βρεις την εικόνα; Σας ζήτησα να εισαγάγετε μια εικόνα και όχι έναν σύνδεσμο προς την εικόνα. Αλλά ξεκινώντας από το Excel 2010, αυτός ο καταγεγραμμένος κώδικας εισάγει πραγματικά έναν σύνδεσμο προς την εικόνα. Και αν ανοίξω αυτό το βιβλίο εργασίας κάπου σε έναν υπολογιστή που δεν έχει πρόσβαση σε αυτήν τη μονάδα δίσκου και σε αυτήν την εικόνα: κόκκινο X. Super ενοχλητικό.

Καλώς. Έτσι, για κάποιο λόγο, στο Excel 2010, το νέο πράγμα που πρέπει να κάνετε, είναι αντί του ActiveSheet.Pictures. Εισαγάγετε το ActiveSheet.Shapes.AddPicture. Καλώς. Και μπορούμε ακόμα να καθορίσουμε ένα όνομα αρχείου, αλλά στη συνέχεια αυτά τα επιπλέον επιχειρήματα που έχουμε: LinkToFile = msoFalse - με άλλα λόγια, μην δημιουργήσετε τον ηλίθιο κόκκινο σύνδεσμο - και στη συνέχεια, SaveWithDocument: = msoTrue - που σημαίνει, στην πραγματικότητα βάλτε την καταραμένη εικόνα εκεί και μπορούν να καθορίσουν πού πρέπει να είναι - η αριστερή, η κορυφή…

Τώρα, πώς υπολογίζουμε το ύψος και το πλάτος; Καλώς. Λοιπόν, θέλουμε να αλλάξουμε το μέγεθός του αναλογικά, σωστά; Άρα πρόκειται να κρατήσω πατημένο το πλήκτρο Shift, όπως να το επαναφέρω σε λιγότερες από μία οθόνες γεμάτες δεδομένα, ίσως να είναι ακριβώς εκεί εκεί. Αυτός είναι ο στόχος μου. Θέλω να εισαγάγω την εικόνα και να έχω μια δέσμη μεγέθους με αυτήν που έχει επιλεγεί. Θα επιστρέψω στο VBA Alt + F11, Ctrl + G για το άμεσο παράθυρο και θα ζητήσω:? selection.width - οπότε αυτό είναι το ερωτηματικό, το διάστημα, το πλάτος κουκίδας επιλογής και ένα ερωτηματικό, το ύψος κουκίδας επιλογής (? Selection.height). Εντάξει, και αυτό μου λέει περίπου 140 και 195-- έτσι το πλάτος, 140 και 195, έτσι. Απαλλαγείτε από το άμεσο παράθυρο και, στη συνέχεια, εδώ θα το διαγράψουμε και θα εκτελέσουμε τον κώδικα και τον εισήγαγε. Είναι το σωστό μέγεθος, θα είναι ανοιχτό όταν το κατεβάσετε,ή το κατεβάζω, εάν δεν έχετε πρόσβαση στην αρχική εικόνα.

Το καταλαβαίνω, τα πράγματα αλλάζουν, έπρεπε να αλλάξουν τον κωδικό. Αλλά το γεγονός ότι δεν ενημέρωσαν τη συσκευή εγγραφής μακροεντολών και η συσκευή εγγραφής μακροεντολής μας έδινε τον κακό κώδικα, αυτό δεν λειτουργεί. Αυτό είναι εξαιρετικά ενοχλητικό.

Λοιπόν, hey για να μάθετε περισσότερα σχετικά με τις μακροεντολές δείτε αυτό το βιβλίο, Excel 2016 VBA Macros, από τον Tracy Syrstad και εγώ. Έχουμε πραγματικά μια έκδοση αυτού για κάθε έκδοση που ξεκινά από το Excel 2003. Έτσι, ό, τι έχετε, με την προϋπόθεση ότι είναι Windows, υπάρχει μια έκδοση για εσάς.

Εντάξει, ολοκληρώστε σήμερα - είναι το πρόβλημά μου. Έγραψα κώδικα για να εισαγάγω μια εικόνα και δημιουργεί έναν σύνδεσμο προς την εικόνα, οπότε οποιοσδήποτε άλλος στέλνω το βιβλίο εργασίας για να μην μπορεί να δει την εικόνα. Αντ 'αυτού, χρησιμοποιώ τη συσκευή εγγραφής μακροεντολών που κάνει ActiveSheets.Shape.Picture, χρησιμοποιήστε αυτό το νέο ActiveSheet.Shapes.AddPicture. Ή μπορούμε να καθορίσουμε το LinkToFile, όχι. αποθήκευση με έγγραφο, ναι. και θα είσαι καλός να πας.

Λοιπόν, hey, ευχαριστώ που παρακολουθήσατε, θα σας δω την επόμενη φορά για ένα άλλο netcast από.

Λήψη αρχείου Excel

Για λήψη του αρχείου excel: vba-insert-picture-bug.xlsm

Πολλές φορές, η εγγραφή μακροεντολών στο Excel καταγράφει λάθος κωδικό. Με την παραπάνω διόρθωση, μπορείτε να εισαγάγετε με επιτυχία εικόνες χρησιμοποιώντας το VBA.

Excel Thought Of the Day

Ζήτησα από τους φίλους μου στο Excel Master τις συμβουλές τους σχετικά με το Excel. Η σημερινή σκέψη να σκεφτούμε:

"Το Excel είναι ένα εργαλείο στην υπηρεσία των ανθρώπων που πρέπει να ζήσουν με τις συνέπειες."

Oz du Soleil

ενδιαφέροντα άρθρα...