Cách chèn ảnh bằng Excel VBA
Xin chào! Cố gắng làm rung chuyển bảng điều khiển bằng những hình ảnh có ý nghĩa. Hoặc chỉ cố gắng chèn ảnh vào ô Excel VBA. Chà, bạn không thể chèn ảnh vào ô excel nhưng bạn có thể thay đổi kích thước nó để vừa với ô excel.
Làm thủ công sẽ mất rất nhiều thời gian và thật khó chịu. vậy giải pháp là gì? Bạn đã đoán đúng, một VBA Macro. Chúng tôi sẽ viết mã ngay bây giờ.
Dưới đây là mã vba theexcel để chèn ảnh từ một thư mục vào một ô hoặc một phạm vi nhất định. Nhấn Alt + F11, chèn một mô-đun và sao chép mã này.
Đừng lo lắng, tôi đã giải thích nó dưới đây để bạn có thể sửa đổi nó theo nhu cầu của mình.
Chèn ảnh vào ô Excel vớiVBAinto một ô hoặc một dải ô đã cho [width = “100%”, cols = “100%”,]
Sub TestInsertPictureInRange()InsertPictureInRange “C:\FolderName\PictureFileName.gif”, _Range(“B5:D10”) End Sub Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range) ‘ inserts a picture and resizes it to fit the TargetCells range Dim p As Object, t As Double, l As Double, w As Double, h As Double If TypeName(ActiveSheet) <> “Worksheet” Then Exit Sub If Dir(PictureFileName) = “” Then Exit Sub ‘ import picture Set p = ActiveSheet.Pictures.Insert(PictureFileName) ‘ determine positions With TargetCells t = .Top l = .Left w = .Offset(0, .Columns.Count).Left – .Left h = .Offset(.Rows.Count, 0).Top – .Top End With ‘ position picture With p Height = h
End With Set p = Nothing End Sub |
Giải thích:
Phần 1:
Sub TestInsertPictureInRange()InsertPictureInRange “C:\FolderName\PictureFileName.gif”, _Range(“B5:D10”) End Sub |
Chương trình con trên chỉ gọi chương trình con chính InsertPictureInRange chỉ có hai đối số. Đầu tiên là địa chỉ của tệp hình ảnh với tên của nó và Phạm vi thứ hai mà bạn muốn chèn hình ảnh trong Excel.
Phần 2:
Sub InsertPictureInRange(PictureFileName As String, TargetCells As Range)’ inserts a picture and resizes it to fit the TargetCells rangeDim p As Object, t As Double, l As Double, w As Double, h As Double If TypeName(ActiveSheet) <> “Worksheet” Then Exit Sub If Dir(PictureFileName) = “” Then Exit Sub ‘ import picture Set p = ActiveSheet.Pictures.Insert(PictureFileName) ‘ determine positions With TargetCells t = .Top l = .Left w = .Offset(0, .Columns.Count).Left – .Left h = .Offset(.Rows.Count, 0).Top – .Top End With ‘ position picture With p Height = h
End With Set p = Nothing End Sub |
Đây là chương trình con chính chèn và thay đổi kích thước hình ảnh để phù hợp với phạm vi đã cho. Hãy cùng tìm hiểu nó.
Dim p As Object, t As Double, l As Double, w As Double, h As Double
Dòng này chỉ là một khai báo biến mà chúng ta sẽ cần. Lưu ý p Là biến đối tượng. Biến này sẽ giữ bức tranh của chúng ta.
If TypeName(ActiveSheet) <> "Worksheet" Then Exit Sub
Nó kiểm tra xem Activesheet có phải là một trang tính hay không. Nếu không, nó sẽ thoát mã ngay lập tức và không có gì xảy ra.
If Dir(PictureFileName) = "" Then Exit Sub
Kiểm tra xem bạn đã cung cấp địa chỉ cho hình ảnh để chèn ảnh vào ô excel chưa. Nếu bạn chưa cung cấp, nó sẽ thoát ngay lập tức và không có gì xảy ra.
Set p = ActiveSheet.Pictures.Insert(PictureFileName)
Bây giờ, đây là dòng quan trọng nhất. Trong dòng này, chúng tôi đang sử dụng chức năng Chèn của Activesheet. Đối tượng Pictures và đưa nó vào đối tượng p mà chúng ta đã khai báo trước đó. Giờ đây, bằng cách sử dụng p, chúng tôi có thể dễ dàng điều chỉnh chiều rộng và chiều dài của hình ảnh.
With TargetCells t = .Top l = .Left w = .Offset(0, .Columns.Count).Left - .Left h = .Offset(.Rows.Count, 0).Top - .Top End With
Phân đoạn này chỉ lấy Chiều dài, Chiều rộng, Trên cùng và Bên trái từ phạm vi đã cho.
With p .Top = t .Left = l .Width = w Height = h End With
Phần này điều chỉnh hình ảnh trong phạm vi nhất định. Và nó đã hoàn thành. Cuối cùng, chúng tôi đặt nó miễn phí bằng cách đặt nó thành không.
Set p = Nothing
Dòng này miễn phí bộ nhớ.
Mã này sẽ hoạt động trong Excel 2016, Excel 2013, Excel 2010 và Excel 2007.
Ở đây tôi muốn chèn hình ảnh trong phạm vi A1: C10. Để thực hiện việc này, tôi đã sửa đổi mã của mình bên dưới [width = “100%”, cols = “100%”,]
Sub TestInsertPictureInRange()InsertPictureInRange “*C:\Users\Manish Singh\Downloads\biker.jpg”, _Range(“A1:C10*”) End Sub |
Và đây là những gì tôi nhận được. Chính xác những gì tôi muốn.
Vì vậy, vâng. Sử dụng mã này để chèn ảnh vào ô hoặc dải ô excel. Chơi xung quanh mã. Cố gắng chèn các định dạng khác nhau, phạm vi lạ và xem điều gì sẽ xảy ra. Nếu bạn có bất kỳ câu hỏi nào hoặc đang đối mặt với bất kỳ thách thức nào, hãy sử dụng phần bình luận bên dưới để hỏi tôi.