Cách chèn một ảnh vào ô bằng VBA trong Excel
Bạn dễ dàng có thể chèn ảnh vào trong bảng tính Excel và chỉnh sửa chúng bằng code macro. Dưới đây là cách chèn ảnh vào một ô bằng VBA trong Excel.
Visual Basic for Application, viết tắt là VBA là một dạng của Visual Basic 6 được tích hợp vào các chương trình Microsoft Office. Qua việc code, VBA cho phép bạn tự động hóa nhiệm vụ trong những phần mềm Office, bao gồm Excel. Ở một số trường hợp, thậm chí bạn có thể thêm tính năng mới vào Excel bằng VBA.
Dù cần làm việc với code để dùng VBA, điều đó không có nghĩa VBA toàn chữ và số. Với VBA trong Excel, bạn có thể tạo một macro cho phép bạn chèn ảnh vào một ô hoặc phạm vi ô. Dưới đây là những điều bạn cần biết về cách chèn ảnh vào ô trong Excel bằng VBA.
Cách chèn ảnh vào ô bằng VBA trong Excel
Để tạo một macro chèn ảnh vào ô Excel bằng VBA, bạn thực sự không cần tới bất kỳ kiến thức Visual Basic nâng cao nào. Toàn bộ việc bạn cần làm là bật công cụ Developer, tạo macro và dán code phù hợp. Tất nhiên, bạn cũng có thể chèn ảnh vào Excel mà không cần dùng VBA. Thế nhưng, ở bài viết này, chúng ta sẽ tập trung vào VBA.
1. Bật công cụ Developer
Để dùng VBA trong Excel, bạn cần bật công cụ Developer. Hành động này sẽ bật tab Developer trong ribbon, mặc định bị vô hiệu hóa.
- Mở Excel.
- Tới menu File.
- Click Options ở phía dưới cùng của màn hình. Cửa sổ Excel Options sẽ hiện ra.
- Trong Excel Options, tới tab Customize Ribbon.
- Trong Main Tabs, tích Developer.
Giờ các công cụ Developer, bao gồm truy cập VBA đều được bật. Bạn không cần làm việc này mỗi lần muốn dùng VBA trong Excel. Những công cụ Developer sẽ luôn được bật cho tới khi bạn tắt chúng.
2. Tạo macro và chèn code
- Trong Excel, tới tab Developer.
- Trong phần Code, chọn Macros.
- Ở cửa sổ mới, nhập tên macro của bạn trong Macro name. Bài viết sẽ dùng insertPhotoMacro.
- Click Create.
Sau khi click Create, cửa sổ VBA sẽ mở và hiện 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 chút code vào macro này. Bổ sung dòng code sau vào giữa 2 dòng:
Dim photoNameAndPath As Variant
Dim photo As Picture
photoNameAndPath = Application.GetOpenFilename(Title:="Select Photo to Insert")
If photoNameAndPath = False Then Exit Sub
Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath)
With photo
.Left = ActiveSheet.Range("A1").Left
.Top = ActiveSheet.Range("A1").Top
.Width = ActiveSheet.Range("A1").Width
.Height = ActiveSheet.Range("A1").Height
.Placement = 1
End With
Code cuối cùng sẽ giống như sau:
Bạn không cần lo nghĩ về việc lưu tiến trình này. Mọi thay đổi bạn thực hiện trong VBA đều được lưu ngay lập tức.
Giờ là lúc xem code hoạt động:
- Đóng cửa sổ VBA.
- Tới tab Developer ở Excel.
- Chọn Macros từ phần Code.
- Đánh dấu macro bạn vừa tạo.
- Click Run.
Giờ một thông báo sẽ mở ra yêu cầu bạn xác định vị trí file ảnh muốn chèn. Chọn ảnh, rồi click Open. Giờ bạn sẽ thấy ảnh trong ô A1.
Lưu ý, Excel sẽ thu nhỏ ảnh để nó vừa khít ô A1. Bạn có thể thay đổi nó và đổi cả code để chèn ảnh vào các ô khác, thậm chí cả một phạm vi ô. Ở phần tiếp theo, chúng ta sẽ tách code và giải thích các tham số.
3. Chia code
Để code VBA hoạt động theo cách bạn muốn, bạn cần hiểu nó. Khi làm việc này, bạn có thể thay đổi code để chèn ảnh vào ô bất kỳ ở mọi kích thước.
Sub insertPhotoMacro()
Dim photoNameAndPath As Variant
Dim photo As Picture
photoNameAndPath = Application.GetOpenFilename(Title:="Select Photo to Insert")
If photoNameAndPath = False Then Exit Sub
Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath)
With photo
.Left = ActiveSheet.Range("A1").Left
.Top = ActiveSheet.Range("A1").Top
.Width = ActiveSheet.Range("A1").Width
.Height = ActiveSheet.Range("A1").Height
.Placement = 1
End With
End Sub
Khi code bắt đầu, lệnh Dim được dùng để xác định kiểu biến. Chúng ta có hai kiểu biến: photoNameAndPath và photo. Đầu tiên là biến và sau đó là ảnh.
Từ đó, biến photoNameAndPath 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 qua Application.GetOpenFileName. Tham số Title là tùy chọn. Nội dụng bên trong nó được hiện 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ệ hay trống được đưa ra, quá trình này sẽ kết thúc. Tuy nhiên, nếu được cung cấp một file thích hợp, Set photo = ActiveSheet.Pictures.Insert(photoNameAndPath) 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, dùng With photo và 5 dòng sau nó để xác định vị trí của ảnh. .Left và .Top chỉ vị trí khởi đầu, còn .Width và .Height chỉ vị trí kết thúc. Nếu định chèn ảnh vào ô khác hoặc một phạm vi nào đó, thì chúng là những dòng bạn nên thay đổi.
.Placement cho biết ảnh nên được chỉnh kích thước vừa với ô hoặc chèn ở dạng tự do. Thiết lập nó sang 1 sẽ chỉnh kích thước của nó theo ô.
Cuối cùng, code trên dùng End With, rồi End Sub để đóng macro. Giờ bạn có thể thay đổi các biến photoNameAndPath và photo sang bất kỳ tên khác mà bạn thích. Chỉ cần nhớ giữ các tên đồng nhất xuyên suốt code này.
Trên đây là cách dùng VBA chèn ảnh vào ô trong Excel. Hi vọng bài viết hữu ích với các bạn.