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.

pasted image 0 (1)

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.

Tải xuống tệp

Bài viết phổ biến: