Dễ dàng chèn hình vào bảng tính Excel và chỉnh sửa chúng bằng code macro. Dưới đây là cách chèn hình vào ô trong Excel bằng VBA.
Visual Basic for Application, gọi tắt là VBA, là một phiên bản của Visual Basic 6 được tích hợp vào các ứng dụng Microsoft Office. Thông qua mã code, VBA cho phép tự động hóa các tác vụ trong các ứng dụng Office, bao gồm cả Excel. Đôi khi, bạn còn có thể thêm tính năng mới vào Excel bằng VBA.
Mặc dù bạn cần làm việc với mã code để sử dụng VBA, nhưng điều đó không có nghĩa là VBA chỉ là chữ và số. Trong Excel, VBA cho phép bạn tạo macro để chèn hình vào một ô hoặc một phạm vi ô. Dưới đây là những điều cần biết về cách chèn hình vào ô trong Excel bằng VBA.
Để tạo một macro chèn hình vào ô Excel bằng VBA, bạn không cần phải có kiến thức nâng cao về Visual Basic. Bạn chỉ cần bật công cụ Developer, tạo macro và dán code. Tất nhiên, bạn cũng có thể chèn hình vào Excel mà không cần dùng VBA. Nhưng trong bài viết này, chúng ta sẽ tập trung vào VBA.
1. Bật công cụ Developer
Để sử dụng VBA trong Excel, bạn cần bật công cụ Developer. Hành động này sẽ hiển thị tab Developer trong ribbon, mặc định là bị vô hiệu hóa.
- Mở Excel.
- Đi tới menu File.
- Chọn Options ở phía dưới cùng của màn hình. Cửa sổ Excel Options sẽ xuất hiện.
- Trong Excel Options, chọn tab Customize Ribbon.
- Trong Main Tabs, tích chọn Developer.
Bây giờ, các công cụ Developer, bao gồm truy cập VBA, đã được bật. Bạn không cần phải làm điều này mỗi khi muốn sử dụng VBA trong Excel. Những công cụ Developer sẽ luôn được kích hoạt cho đến khi bạn tắt chúng.
2. Tạo macro và chèn code
- Trong Excel, chọn tab Developer.
- Trong phần Code, chọn Macros.
- Trong cửa sổ mới, nhập tên cho macro của bạn trong Macro name. Bài viết sẽ sử dụng insertPhotoMacro.
- Click Create.
Sau khi click Create, cửa sổ VBA sẽ mở ra và hiển thị code cho macro của bạn. Hiện tại, code sẽ bao gồm 2 dòng: một Sub để bắt đầu macro và một End Sub để kết thúc nó.
Thêm một ít mã vào macro này. Bổ sung dòng mã sau giữa 2 dòng:
Dim photoNameAndPath As Variant
Dim photo As Picture
photoNameAndPath = Application.GetOpenFilename(Title:='Chọn Ảnh để Chèn')
If photoNameAndPath = False Then Thoát Sub
Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath)
With photo
.Bên trái =
ActiveSheet.Phạm vi('A1').Bên trái
.Trên = ActiveSheet.Phạm vi('A1').Trên
.Rộng = ActiveSheet.Phạm vi('A1').Rộng
.Cao = ActiveSheet.Phạm vi('A1').Cao
.Đặt = 1
Kết Thúc Với
Mã cuối cùng sẽ như sau:
Bạn không cần lo lắng về việc lưu trạng thái này. Mọi thay đổi bạn thực hiện trong VBA sẽ được lưu tức thì.
Bây giờ là thời điểm để xem mã hoạt động:
- Đóng cửa sổ VBA.
- Chọn tab Developer trong Excel.
- Chọn Macros từ phần Code.
- Đánh dấu macro bạn vừa tạo.
- Click Run.
Bây giờ một hộp thoại sẽ hiện ra yêu cầu bạn chọn vị trí của file ảnh bạn muốn chèn. Chọn ảnh và click Open. Bây giờ bạn sẽ thấy ảnh trong ô A1.
Lưu ý rằng, Excel sẽ tự động thu nhỏ ảnh để vừa khít với ô A1. Bạn có thể thay đổi điều này và sửa mã để chèn ảnh vào các ô khác, thậm chí là một phạm vi ô. Ở phần tiếp theo, chúng ta sẽ phân tách mã và giải thích các tham số.
3. Phân chia code
Để mã VBA hoạt động theo ý bạn, bạn cần hiểu nó. Khi làm điều này, bạn có thể chỉnh sửa mã để chèn ảnh vào bất kỳ ô nào với mọi kích thước.
Sub chènẢnhMacro()
Dim tênVàĐườngDẫnẢnh As Biến
Dim ảnh As HìnhẢnh
tênVàĐườngDẫnẢnh = ỨngDụng.LấyTênTệpẢnh(TiêuĐề:='Chọn Ảnh để Chèn')
Nếu tênVàĐườngDẫnẢnh = False Thì Thoát Sub
Đặt ảnh = TrangBảngHoạtĐộng.Ảnh.Chèn(tênVàĐườngDẫnẢnh)
Với ảnh
.BênTrai = TrangBảngHoạtĐộng.TổngHợp.BênTrai
.BênTrên = TrangBảngHoạtĐộng.TổngHợp.BênTrên
.ChiềuRộng = TrangBảngHoạtĐộng.TổngHợp.ChiềuRộng
.ChiềuCao = TrangBảngHoạtĐộng.TổngHợp.ChiềuCao
.ĐặtVịTrí = 1
KếtThúc Với
KếtThúc Sub
Khi mã bắt đầu, lệnh Dim được sử dụng để xác định kiểu biến. Chúng ta có hai loại biến: tênVàĐườngDẫnẢnh và ảnh. Đầu tiên là biến và sau đó là hình ảnh.
Do đó, biến tênVàĐườngDẫnẢnh sẽ chạy và nó sẽ mở một ứng dụng để lấy vị trí của file ảnh. Điều này được thực hiện thông qua ỨngDụng.LấyTênTệpẢnh. Tham số TiêuĐề là tùy chọn. Nội dung bên trong nó được hiển thị dưới dạng tên cửa sổ.
Dùng If photoNameAndPath = False Then Exit Sub, nếu một địa chỉ không hợp lệ hoặc trống được cung cấp, quá trình này sẽ kết thúc. Tuy nhiên, nếu có một tệp phù hợp, Đặt ảnh = TrangBảngHoạtĐộng.Ảnh.Chèn(tênVàĐườngDẫnẢnh) chỉ ra rằng ảnh phải được đặt làm biến như đã xác định ban đầu. Nó sẽ được chèn vào bảng tính đang hoạt động.
Cuối cùng, sử dụng With ảnh và 5 dòng sau đó để xác định vị trí của ảnh. .BênTrái và .Trên chỉ vị trí bắt đầu, còn .ChiềuRộng và .ChiềuCao chỉ vị trí kết thúc. Nếu bạn muốn chèn ảnh vào ô khác hoặc một phạm vi khác, thì đây là những dòng bạn cần thay đổi.
.ĐặtVịTrí cho biết ảnh nên được điều chỉnh kích thước để vừa với ô hoặc được chèn ở dạng tự do. Thiết lập nó thành 1 sẽ điều chỉnh kích thước của ảnh theo ô.
Cuối cùng, mã trên sử dụng KếtThúc Với, sau đó KếtThúc Sub để kết thúc macro. Bây giờ bạn có thể thay đổi tên biến tênVàĐườngDẫnẢnh và ảnh thành bất kỳ tên nào bạn muốn. Chỉ cần nhớ giữ các tên đồng nhất trong toàn bộ mã này.
Đây là cách sử dụng VBA để chèn ảnh vào ô trong Excel. Hy vọng bài viết sẽ hữu ích với bạn.