Tôi cần một macro Excel chèn ảnh trong Excel. Tôi bật máy ghi macro, chèn ảnh. Nhưng khi tôi sử dụng mã đã ghi đó, hình ảnh sẽ không xuất hiện trên bất kỳ máy tính nào khác. Thay vào đó, tôi nhận được một dấu X màu đỏ ở vị trí của bức ảnh.
Mã được sử dụng để hoạt động trong Excel 2007 trở về trước. Nhưng có điều gì đó đã thay đổi trong Excel 2010. Khi bạn chạy mã tới ActiveSheet.Pictures.Insert, Excel * không * đang chèn ảnh. Thay vào đó, nó đang chèn một liên kết đến bức tranh.
Tất nhiên, khi bạn chạy mã trên máy tính của mình, có vẻ như mọi thứ đã hoạt động. Hình ảnh xuất hiện.

Nhưng khi ai đó mở sổ làm việc trên một PC khác, họ nhận được dấu X màu đỏ và thông báo rằng ảnh có thể đã được di chuyển hoặc đổi tên.

Tất nhiên, hình ảnh không có trên máy tính của Người quản lý của tôi. Tôi không yêu cầu Excel tạo liên kết đến hình ảnh. Tôi đã yêu cầu Excel để chèn hình ảnh. Nhưng đoạn mã được ghi lại đang chèn một liên kết đến hình ảnh.
Giải pháp là chuyển sang mã khác. Bằng cách sử dụng Shapes.AddPicture, bạn có thể chỉ định LinkToFile:=msoFalse
. Đây là mã để sử dụng:
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
Xem video
Bản ghi video
Học Excel từ Podcast, Tập 2214: Lỗi VBA thực sự khó chịu khi bạn đang cố gắng chèn ảnh.
Ổn thỏa. Vì vậy, này, điều này bắt đầu xảy ra trong Excel 2010. Gần đây, tôi lại bị cháy bởi nó.
Vì vậy, tôi sẽ chèn một ảnh vào sổ làm việc này, nhưng tôi muốn ghi lại hành động đó để tôi có thể tự động thực hiện. View, Macro, Macro ghi, HowToInsertAPicture. Hoàn hảo. Và tôi sẽ chèn một bức ảnh ở đây: Hình minh họa, Hình ảnh, hãy chọn một trong những bức ảnh tên lửa của chúng tôi và Chèn. Được rồi, dừng ghi. Xinh đẹp. Bây giờ, tôi sẽ loại bỏ điều đó. Tôi muốn xem các macro, vì vậy Alt + F8, HowToInsertAPicture, Edit, và nó cho biết đây là: ActiveSheet.Pictures.Insert và sau đó là đường dẫn đến hình ảnh. Ổn thỏa. Ừ, nghe hay đấy. Và, trên thực tế, chúng ta sẽ có thể chạy nó. Vì vậy, Alt + 8, HowToInsertAPicture, và Run, và chúng ta có được bức ảnh-- thật đẹp. Cho đến khi tôi lưu sổ làm việc này và cho phép bạn tải xuống hoặc gửi cho người khác, và sau đó hình ảnh không 'không hiển thị chút nào-- tất cả những gì tôi nhận được là một dấu X màu đỏ nói rằng, Này, chúng tôi không thể tìm thấy bức ảnh nữa. Như bạn có nghĩa là gì bạn không thể tìm thấy hình ảnh? Tôi yêu cầu bạn chèn một hình ảnh, không phải một liên kết đến hình ảnh. Nhưng bắt đầu từ Excel 2010, đoạn mã được ghi này thực sự đang chèn một liên kết đến hình ảnh. Và nếu tôi mở sổ làm việc này ở đâu đó trên máy tính không có quyền truy cập vào ổ đĩa này và hình ảnh đó: màu đỏ X. Siêu khó chịu.
Ổn thỏa. Vì vậy, vì một số lý do, trong Excel 2010, điều mới cần làm là thay vì ActiveSheet.Pictures.Nhấn bạn thực hiện ActiveSheet.Shapes.AddPicture. Ổn thỏa. Và chúng ta vẫn có thể chỉ định tên tệp, nhưng sau đó, các đối số bổ sung này mà chúng ta có: LinkToFile = msoFalse-- nói cách khác, không tạo liên kết màu đỏ ngu ngốc-- và sau đó, SaveWithDocument: = msoTrue-- thực sự có nghĩa là đặt bức tranh darn vào đó và họ có thể chỉ định nơi nó được cho là-- bên trái, trên cùng…
Bây giờ, làm thế nào để tìm ra chiều cao và chiều rộng? Ổn thỏa. Chúng tôi muốn thay đổi kích thước này theo tỷ lệ, phải không? Vì vậy, tôi sẽ giữ phím Shift, như đưa nó trở lại ít hơn một màn hình đầy dữ liệu, có thể như vậy ngay tại đó. Vì vậy, đó là mục tiêu của tôi. Tôi muốn chèn hình ảnh và có một chùm có kích thước với kích thước đã chọn. Tôi sẽ quay lại VBA Alt + F11, Ctrl + G cho cửa sổ ngay lập tức và tôi sẽ yêu cầu:? lựa chọn. width-- vì vậy đó là dấu chấm hỏi, khoảng trắng, chiều rộng chấm lựa chọn và dấu hỏi, chiều cao chấm lựa chọn (? Selection.height). Được rồi, và điều đó cho tôi biết về 140 và 195-- vì vậy chiều rộng, 140 và 195, như vậy. Thoát khỏi cửa sổ ngay lập tức, sau đó ở đây chúng tôi sẽ xóa nó và chạy mã, và nó thực sự đã chèn nó. Nó có kích thước phù hợp, nó sẽ có thể mở khi bạn tải xuống,hoặc tôi tải xuống cái này, nếu bạn không có quyền truy cập vào hình ảnh gốc.
Tôi hiểu rồi, mọi thứ thay đổi, họ phải thay đổi mã. Nhưng thực tế là họ đã không cập nhật trình ghi macro và trình ghi macro đang cung cấp cho chúng tôi mã xấu, điều đó không hoạt động. Thật là khó chịu.
Chà, này để tìm hiểu thêm về macro, hãy xem cuốn sách này, Excel 2016 VBA Macros, của Tracy Syrstad và chính tôi. Chúng tôi thực sự có một phiên bản của cái này cho mọi phiên bản trở lại excel 2003. Vì vậy, bất cứ thứ gì bạn có, miễn là Windows, đều có phiên bản dành cho bạn.
Được rồi, kết thúc ngày hôm nay-- đó là vấn đề của tôi. Tôi đã ghi mã để chèn ảnh và nó đang tạo liên kết đến ảnh, vì vậy bất kỳ ai khác mà tôi gửi sổ làm việc đều không thể xem ảnh. Thay vào đó, tôi đang sử dụng trình ghi Macro có ActiveSheets.Shape.Picture, sử dụng ActiveSheet.Shapes.AddPicture mới này. Hoặc chúng ta có thể chỉ định LinkToFile, không; lưu với tài liệu, có; và bạn sẽ tốt để đi.
Vâng, này, cảm ơn bạn đã xem, tôi sẽ gặp lại bạn lần sau với một netcast khác của.
Tải xuống tệp Excel
Để tải xuống tệp excel: vba-insert-picture-bug.xlsm
Nhiều lần, trình ghi macro trong Excel ghi sai mã. Với cách khắc phục trên, bạn có thể chèn ảnh thành công bằng VBA.
Suy nghĩ của Excel trong ngày
Tôi đã hỏi những người bạn Excel Master của mình để được tư vấn về Excel. Hôm nay cần suy ngẫm:
"Excel là một công cụ phục vụ những người phải sống chung với hậu quả."
Oz du Soleil