VBA Masukkan Bug Gambar - Petua Excel

Isi kandungan

Saya perlu mempunyai makro Excel memasukkan gambar di Excel. Saya menghidupkan perakam makro, memasukkan gambar. Tetapi semasa saya menggunakan kod yang dirakam itu, gambar tidak akan muncul di komputer lain. Sebagai gantinya, saya mendapat X merah di mana gambarnya seharusnya.

Kod yang digunakan untuk berfungsi di Excel 2007 atau lebih awal. Tetapi sesuatu berubah di Excel 2010. Apabila anda menjalankan kod ke ActiveSheet.Pictures.Insert, Excel tidak * memasukkan * gambar. Sebaliknya, ia memasukkan pautan ke gambar.

Sudah tentu, semasa anda menjalankan kod di komputer anda, nampaknya semuanya berfungsi. Gambar itu muncul.

Nampaknya makro berfungsi.

Tetapi apabila seseorang membuka buku kerja di PC lain, mereka mendapat X merah dan mesej bahawa gambar itu mungkin telah dipindahkan atau dinamakan semula.

Merah X bukannya gambar

Baiklah, sudah tentu gambar tidak ada di komputer Pengurus saya. Saya tidak meminta Excel membuat pautan ke gambar. Saya meminta Excel memasukkan gambar. Tetapi kod yang dirakam memasukkan pautan ke gambar.

Penyelesaiannya adalah beralih ke kod yang berbeza. Dengan menggunakan Shapes.AddPicture, anda boleh menentukan LinkToFile:=msoFalse. Berikut adalah kod untuk 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

Tonton Video

Transkrip Video

Belajar Excel dari Podcast, Episode 2214: Bug VBA Yang Sangat Menyakitkan Semasa Anda Cuba Memasukkan Gambar.

Baiklah. Jadi, hei, ini mula berlaku di Excel 2010. Baru-baru ini saya terbakar.

Oleh itu, saya akan memasukkan gambar ke dalam buku kerja ini, tetapi saya ingin merakam tindakan itu supaya saya dapat melakukannya secara automatik. Lihat, Makro, Makro Perakam, HowToInsertAPicture. Sempurna. Dan saya hanya akan memasukkan gambar di sini: Ilustrasi, Gambar, mari pilih salah satu gambar roket kami dan Masukkan. Baiklah, berhenti merakam. Cantik. Sekarang, saya akan menyingkirkannya. Saya ingin melihat makro, jadi Alt + F8, HowToInsertAPicture, Edit, dan dikatakan seperti ini: ActiveSheet.Pictures.Insert dan kemudian jalan ke gambar. Baiklah. Ya, kedengarannya bagus. Dan, sebenarnya, kita seharusnya dapat menjalankannya. Jadi Alt + 8, HowToInsertAPicture, dan Run, dan kami mendapat gambarnya - itu cantik. Sehingga saya menyimpan buku kerja ini dan membiarkan anda memuat turunnya atau menghantarnya kepada orang lain, dan kemudian gambar itu tidak 't muncul sama sekali - yang saya dapat hanyalah X merah yang mengatakan, Hei, kita tidak dapat mencari gambar lagi. Seperti apa maksudnya anda tidak dapat mencari gambar? Saya meminta anda memasukkan gambar, bukan pautan ke gambar. Tetapi bermula di Excel 2010, kod yang dirakam ini sebenarnya memasukkan pautan ke gambar. Dan jika saya membuka buku kerja ini di suatu tempat di komputer yang tidak mempunyai akses ke pemacu ini dan gambar itu: X merah.

Baiklah. Oleh itu, atas sebab tertentu, di Excel 2010, perkara baru yang perlu dilakukan, bukan ActiveSheet.Pictures. Masukkan anda melakukan ActiveSheet.Shapes.AddPicture. Baiklah. Dan kita masih boleh menentukan nama fail, tetapi kemudian argumen tambahan yang kita ada: LinkToFile = msoFalse-- dengan kata lain, jangan buat pautan merah bodoh - dan kemudian, SaveWithDocument: = msoTrue-- yang bermaksud, sebenarnya letakkan gambar darn di sana dan mereka dapat menentukan di mana ia seharusnya - kiri, atas …

Sekarang, bagaimana kita mengetahui ketinggian dan lebarnya? Baiklah. Baiklah, kita mahu mengubah saiznya secara berkadar, bukan? Oleh itu, saya akan menekan kekunci Shift, seperti mendapatkan kembali ke kurang dari satu skrin yang penuh dengan data, mungkin seperti itu di sana. Jadi itulah tujuan saya. Saya mahu memasukkan gambar dan mempunyai rasuk yang saiznya dipilih. Saya akan kembali ke VBA Alt + F11, Ctrl + G untuk tetingkap segera, dan saya akan meminta:? selection.width-- jadi itu tanda tanya, ruang, lebar titik pilihan dan tanda tanya, ketinggian titik pilihan (? Selection.height). Baiklah, dan itu memberitahu saya tentang 140 dan 195-- jadi lebar, 140, dan 195, seperti itu. Singkirkan tetingkap segera, dan kemudian di sini kita akan memadamkannya dan menjalankan kodnya, dan sebenarnya memasukkannya. Ini ukuran yang betul, ia akan terbuka semasa anda memuat turun ini,atau saya memuat turun ini, jika anda tidak mempunyai akses ke gambar asal.

Saya faham, semuanya berubah, mereka mesti menukar kodnya. Tetapi kenyataan bahawa mereka tidak mengemas kini perekam makro, dan perekam makro memberi kami kod buruk, itu tidak berfungsi. Itu sangat menjengkelkan.

Baiklah, hei untuk mengetahui lebih lanjut mengenai makro lihat buku ini, Excel 2016 VBA Macros, oleh Tracy Syrstad dan saya sendiri. Kami sebenarnya mempunyai versi ini untuk setiap versi yang akan unggul pada tahun 2003. Jadi, apa sahaja yang anda ada, dengan syarat Windows, ada versi untuk anda.

Baiklah, selesaikan hari ini - itu masalah saya. Saya merakam kod untuk memasukkan gambar dan itu membuat pautan ke gambar, jadi orang lain yang saya hantar buku kerja tidak dapat melihat gambarnya. Sebagai gantinya, saya menggunakan perakam Makro yang menggunakan ActiveSheets.Shape.Picture, gunakan ActiveSheet.Shapes.AddPicture baru ini. Atau kita boleh menentukan LinkToFile, tidak; simpan dengan dokumen, ya; dan anda akan berjaya.

Baiklah, hei, terima kasih kerana menonton, saya akan berjumpa dengan anda untuk lain-lain netcast dari.

Muat turun Fail Excel

Untuk memuat turun fail excel: vba-insert-picture-bug.xlsm

Berkali-kali, perakam makro di Excel mencatat kod yang salah. Dengan pembetulan di atas, anda berjaya memasukkan gambar menggunakan VBA.

Pemikiran Excel Hari Ini

Saya telah meminta nasihat rakan Excel saya mengenai Excel. Pemikiran hari ini untuk merenungkan:

"Excel adalah alat untuk melayani orang yang harus hidup dengan akibatnya."

Oz du Soleil

Artikel menarik...