VBA Resim Hatası Ekle - Excel İpuçları

Excel'de bir resim eklemek için bir Excel makrosuna ihtiyacım vardı. Makro kaydediciyi açtım, resmi ekledim. Ancak kaydedilen kodu kullandığımda, resim başka hiçbir bilgisayarda görünmeyecek. Bunun yerine, resmin olması gereken yerde kırmızı bir X alıyorum.

Excel 2007 veya önceki sürümlerde çalışmak için kullanılan kod. Ancak Excel 2010'da bir şey değişti. ActiveSheet.Pictures.Insert'e kod çalıştırdığınızda, Excel resmi * eklemiyor *. Bunun yerine, resme bir bağlantı ekliyor.

Elbette, kodu bilgisayarınızda çalıştırdığınızda, her şey çalışıyormuş gibi görünüyor. Resim belirir.

Görünüşe göre makro çalışmış.

Ancak birisi çalışma kitabını başka bir bilgisayarda açtığında, kırmızı bir X işareti ve resmin taşınmış veya yeniden adlandırılmış olabileceğine dair bir mesaj alır.

Görüntü yerine kırmızı X

Elbette, görüntü müdürümün bilgisayarında değil. Excel'den resme bir bağlantı oluşturmasını istemedim. Excel'den resmi eklemesini istedim. Ancak kaydedilen kod, resme bir bağlantı ekliyor.

Çözüm, farklı bir koda geçmektir. Shapes.AddPicture kullanarak belirtebilirsiniz LinkToFile:=msoFalse. İşte kullanılacak kod:

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

Video izle

Video Metni

Podcast'ten Excel Öğrenin, Bölüm 2214: Resim Eklemeye Çalıştığınızda Gerçekten Can Sıkıcı VBA Hatası.

Peki. Yani, hey, bu Excel 2010'da olmaya başladı. Kısa süre önce yine yanmıştım.

Bu yüzden bu çalışma kitabına bir resim ekleyeceğim, ancak bu eylemi kaydetmek istiyorum, böylece otomatik olarak yapabileyim. Görünüm, Makrolar, Kaydedici Makro, HowToInsertAPicture. Mükemmel. Ve buraya bir resim ekleyeceğim: Çizimler, Resimler, roket fotoğraflarımızdan birini ve Ekle'yi seçelim. Pekala, kaydı durdur. Güzel. Şimdi bundan kurtulacağım. Makrolara bir göz atmak istiyorum, bu nedenle Alt + F8, HowToInsertAPicture, Edit ve şu yazıyor: ActiveSheet.Pictures.Insert ve ardından resmin yolu. Peki. Evet, kulağa hoş geliyor. Ve aslında bunu çalıştırabilmeliyiz. Yani Alt + 8, HowToInsertAPicture ve Run, ve biz resmi alıyoruz-- bu çok güzel. Bu çalışma kitabını kaydedip indirmenize veya başka birine göndermenize izin verene kadar ve sonra resimt hiç görünmüyor-- tüm aldığım kırmızı bir X, Hey, artık resmi bulamıyoruz. Mesela resmi bulamayacaksın ne demek? Sizden resmin bağlantısını değil, bir resim eklemenizi istedim. Ancak Excel 2010'dan başlayarak, bu kaydedilen kod aslında resme bir bağlantı ekliyor. Ve bu çalışma kitabını bu sürücüye ve şu resme erişimi olmayan bir bilgisayarda açarsam: kırmızı X. Çok can sıkıcı.

Peki. Yani, bazı nedenlerden dolayı, Excel 2010'da yapılacak yeni şey ActiveSheet.Pictures yerine ActiveSheet.Shapes.AddPicture yapmaktır. Peki. Ve yine de bir dosya adı belirleyebiliriz, ancak daha sonra sahip olduğumuz bu ekstra argümanlar: LinkToFile = msoFalse - başka bir deyişle, aptal kırmızı bağlantıyı oluşturmayın - ve sonra SaveWithDocument: = msoTrue - bu aslında lanet resmi oraya koyun ve nerede olması gerektiğini belirleyebilirler - sol, üst…

Şimdi, yüksekliği ve genişliği nasıl bulacağız? Peki. Peki, bunu orantılı olarak yeniden boyutlandırmak istiyoruz, değil mi? Bu yüzden, Shift tuşunu basılı tutacağım, örneğin, bunu birden fazla veri dolu ekrana geri getireceğim, belki de tam orada olduğu gibi. Yani amacım bu. Resmi eklemek ve seçilen boyutta bir kirişe sahip olmak istiyorum. Hemen pencere için VBA Alt + F11, Ctrl + G'ye geri döneceğim ve soracağım:? selection.width - yani soru işareti, boşluk, seçim noktası genişliği ve soru işareti, seçim noktası yüksekliği (? Selection.height). Pekala, bu bana 140 ve 195'i gösteriyor-- yani genişlik, 140 ve 195, bunun gibi. Hemen pencereden kurtulun ve sonra burada bunu silip kodu çalıştıracağız ve aslında onu yerleştireceğiz. Doğru boyutta, bunu indirdiğinizde açılabilecek,veya orijinal resme erişiminiz yoksa bunu indiririm.

Anlıyorum, işler değişiyor, kodu değiştirmeleri gerekiyordu. Ancak makro kaydediciyi güncellememiş olmaları ve makro kaydedicinin bize kötü kodu vermesi işe yaramıyor. Bu çok can sıkıcı.

Pekala, makrolar hakkında daha fazla bilgi edinmek için Tracy Syrstad ve benim yazdığı Excel 2016 VBA Makroları adlı bu kitaba göz atın. Aslında, 2003'ü excel'e giden her sürüm için bunun bir sürümüne sahibiz. Yani, sahip olduğunuz her neyse, Windows olması koşuluyla, sizin için bir sürüm var.

Pekala, bugün toparlayın-- bu benim sorunum. Bir resim eklemek için kod kaydettim ve bu resme bir bağlantı oluşturuyor, bu nedenle çalışma kitabını gönderdiğim herhangi biri resmi göremiyor. Bunun yerine, ActiveSheets.Shape.Picture yapan Makro kaydediciyi kullanıyorum, bu yeni ActiveSheet.Shapes.AddPicture'ı kullanın. Veya LinkToFile belirtebiliriz, no; belgeyle kaydet, evet; ve gitmek için iyi olacaksın.

Pekala, hey, izlediğiniz için teşekkürler, bir dahaki sefere başka bir internet yayını için görüşürüz.

Excel Dosyasını İndirin

Excel dosyasını indirmek için: vba-insert-picture-bug.xlsm

Çoğu zaman, Excel'deki makro kaydedici yanlış kodu kaydeder. Yukarıdaki düzeltmeyle, VBA kullanarak görüntüleri başarıyla ekleyebilirsiniz.

Excel Günün Düşüncesi

Excel Master arkadaşlarıma Excel hakkında tavsiyelerini sordum. Bugünün düşüncesi:

"Excel, sonuçlarla yaşamak zorunda kalan insanlara hizmet eden bir araçtır."

Oz du Soleil

Ilginç makaleler...