Saya perlu memiliki makro Excel untuk menyisipkan gambar di Excel. Saya menyalakan perekam makro, memasukkan gambar. Tetapi ketika saya menggunakan kode yang direkam itu, gambar tidak akan muncul di komputer lain. Sebagai gantinya, saya mendapatkan X merah di tempat gambar seharusnya.
Kode yang digunakan untuk bekerja di Excel 2007 atau yang lebih lama. Tapi sesuatu berubah di Excel 2010. Saat Anda menjalankan kode ke ActiveSheet.Pictures.Insert, Excel * tidak * menyisipkan gambar. Sebaliknya, ini memasukkan tautan ke gambar.
Tentu saja, ketika Anda menjalankan kode di komputer Anda, sepertinya semuanya berfungsi. Gambar muncul.

Tapi ketika seseorang membuka buku kerja di PC lain, mereka mendapatkan X merah dan pesan bahwa gambar mungkin telah dipindahkan atau diganti namanya.

Ya, tentu saja gambar tersebut tidak ada di komputer Manajer saya. Saya tidak meminta Excel untuk membuat tautan ke gambar tersebut. Saya meminta Excel untuk memasukkan gambar. Tetapi kode yang direkam memasukkan tautan ke gambar.
Solusinya adalah beralih ke kode yang berbeda. Dengan menggunakan Shapes.AddPicture, Anda dapat menentukan LinkToFile:=msoFalse
. Berikut kode yang akan digunakan:
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
Menonton video
Transkrip Video
Pelajari Excel dari Podcast, Episode 2214: Bug VBA yang Sangat Mengganggu Saat Anda Mencoba Menyisipkan Gambar.
Baik. Jadi, hei, ini mulai terjadi di Excel 2010. Saya baru saja terbakar lagi akhir-akhir ini.
Jadi saya akan menyisipkan gambar ke dalam buku kerja ini, tetapi saya ingin merekam tindakan itu sehingga saya bisa melakukannya secara otomatis. Tampilan, Makro, Makro Perekam, HowToInsertAPicture. Sempurna. Dan saya hanya akan menyisipkan gambar di sini: Ilustrasi, Gambar, mari pilih salah satu foto roket dan Sisipkan. Baiklah, berhenti merekam. Cantik. Sekarang, saya akan menyingkirkan itu. Saya ingin melihat makro, jadi Alt + F8, HowToInsertAPicture, Edit, dan dikatakan begini: ActiveSheet.Pictures.Insert dan kemudian path ke gambar. Baik. Ya, kedengarannya bagus. Dan, nyatanya, kita harus bisa menjalankan ini. Jadi Alt + 8, HowToInsertAPicture, dan Run, dan kami mendapatkan gambarnya-- itu indah. Sampai saya menyimpan buku kerja ini dan membiarkan Anda mendownloadnya atau mengirimkannya ke orang lain, dan kemudian gambarnya tidaktidak muncul sama sekali-- yang saya dapatkan hanyalah X merah yang bertuliskan, Hei, kita tidak dapat menemukan gambarnya lagi. Seperti apa maksud Anda tidak dapat menemukan fotonya? Saya meminta Anda untuk menyisipkan gambar, bukan tautan ke gambar. Tapi mulai di Excel 2010, kode yang direkam ini sebenarnya memasukkan tautan ke gambar. Dan jika saya membuka buku kerja ini di suatu tempat di komputer yang tidak memiliki akses ke drive ini dan gambar itu: X merah. Sangat mengganggu.
Baik. Jadi, untuk beberapa alasan, di Excel 2010, hal baru yang harus dilakukan adalah alih-alih ActiveSheet.Pictures.Insert Anda melakukan ActiveSheet.Shapes.AddPicture. Baik. Dan kita masih bisa menentukan nama file, tapi argumen tambahan yang kita miliki: LinkToFile = msoFalse-- dengan kata lain, jangan buat tautan merah bodoh-- lalu, SaveWithDocument: = msoTrue-- yang artinya, sebenarnya letakkan gambar sialan itu di sana dan mereka dapat menentukan di mana seharusnya foto itu-- kiri, atas…
Sekarang, bagaimana kita mengetahui tinggi dan lebarnya? Baik. Nah, kami ingin mengubah ukurannya secara proporsional, bukan? Jadi saya akan menahan tombol Shift, seperti, mengembalikan ini ke kurang dari satu layar penuh data, mungkin seperti itu di sana. Jadi itulah tujuan saya. Saya ingin menyisipkan gambar dan memiliki ukuran balok itu dengan yang dipilih. Saya akan kembali ke VBA Alt + F11, Ctrl + G untuk jendela langsung, dan saya akan menanyakan:? selection.width-- jadi itulah tanda tanya, spasi, lebar titik pilihan dan tanda tanya, tinggi titik pemilihan (? Selection.height). Baiklah, dan itu memberitahu saya tentang 140 dan 195-- jadi lebarnya, 140, dan 195, seperti itu. Singkirkan jendela langsung, lalu di sini kita akan menghapus ini dan menjalankan kode, dan itu benar-benar memasukkannya. Ini ukurannya tepat, ini akan dapat dibuka saat Anda mengunduh ini,atau saya mendownload ini, jika Anda tidak memiliki akses ke gambar aslinya.
Saya mengerti, banyak hal berubah, mereka harus mengubah kodenya. Tetapi fakta bahwa mereka tidak memperbarui perekam makro, dan perekam makro memberi kami kode buruk, itu tidak berfungsi. Itu sangat menyebalkan.
Untuk mempelajari lebih lanjut tentang makro, lihat buku ini, Makro VBA Excel 2016, oleh Tracy Syrstad dan saya sendiri. Kami sebenarnya memiliki versi ini untuk setiap versi yang kembali ke excel 2003. Jadi, apa pun yang Anda miliki, asalkan itu Windows, ada versi untuk Anda.
Baiklah, selesaikan hari ini-- ini masalahku. Saya merekam kode untuk menyisipkan gambar dan itu membuat link ke gambar, jadi siapa pun yang saya kirimi buku kerja tidak bisa melihat gambar. Sebagai gantinya, saya menggunakan perekam Makro yang melakukan ActiveSheets.Shape.Picture, gunakan ActiveSheet.Shapes.AddPicture baru ini. Atau kita dapat menentukan LinkToFile, no; simpan dengan dokumen, ya; dan Anda akan baik-baik saja.
Terima kasih telah menonton, sampai jumpa di lain waktu untuk netcast lain dari.
Unduh File Excel
Untuk mengunduh file excel: vba-insert-picture-bug.xlsm
Seringkali, perekam makro di Excel merekam kode yang salah. Dengan perbaikan di atas, Anda berhasil memasukkan gambar menggunakan VBA.
Pemikiran Excel Hari Ini
Saya telah meminta saran dari teman-teman Master Excel saya tentang Excel. Hari ini pemikiran untuk direnungkan:
"Excel adalah alat untuk melayani orang-orang yang harus menanggung akibatnya."
Oz du Soleil