Chèn hình vào cell bằng hàm tự tạo

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Xưa nay người ta thường chèn hình vào bảng tính bằng 1 thủ tục nào đó (Sub...). Vậy các bạn có nghĩ rằng có thể chèn hình bằng hàm tự tạo không? Tức là ta gõ hàm vào cell, lập tức hình được chèn vào ngay cell ấy!
Ví dụ ta gõ thế này: =CommPic("D:\Pic\Hinh 1.jpg",C5) thì lập tức Hinh 1.jpg được chèn vừa vặn vào cell C5
Hấp dẫn nhỉ? Vậy mà code lại khá đơn giản:
Mã:
Function CommPic(Pic As String, Cel As Range) As String
  On Error Resume Next
  Application.Volatile
  Cel.Comment.Delete
  If Cel.Comment Is Nothing Then Cel.AddComment
  Cel.Comment.Text vbLf
  With Cel.Comment.Shape
    .Left = Cel.Left: .Top = Cel.Top: .Visible = True
    .Width = Cel.Width: .Height = Cel.Height
    .Fill.UserPicture Pic
  End With
End Function
Thí nghiệm:
- Mở Excel, chèn code trên vào module, xong lưu file vào 1 thư mục nào đó
- Copy 1 số hình vào cùng thư mục chưa file Excel (file của tôi có 4 hình AT01.jpg, AT02.jpg, AT03.jpgAT04.jpg)
- Gõ công thức này vào cell B3:
PHP:
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
- Từ cell A5 trở xuống, gõ tên các file hình
- Tại cell B5, gõ công thức =$B$3&A5 và kéo fill xuống
- Tại cell C5, gõ công thúc =CommPic(B5,C5) và kéo fill xuống
Xem thử hình đã được Add vào có ngoạn mục không?
Hy vọng tạo sự dễ dàng cho các bạn, những ai quan tâm đến việc chèn hình ảnh vào bảng tính
 

File đính kèm

  • TestComPic.rar
    68.2 KB · Đọc: 7,595
Quá tuyệt vời. Em xin cám ơn các anh/chị đã giúp đỡ.
Một lần nữa em xin cám ơn anh/ chị siwtom đã giúp đỡ em trong bài này.
 
Upvote 0
Xưa nay người ta thường chèn hình vào bảng tính bằng 1 thủ tục nào đó (Sub...). Vậy các bạn có nghĩ rằng có thể chèn hình bằng hàm tự tạo không? Tức là ta gõ hàm vào cell, lập tức hình được chèn vào ngay cell ấy!
Ví dụ ta gõ thế này: =CommPic("D:\Pic\Hinh 1.jpg",C5) thì lập tức Hinh 1.jpg được chèn vừa vặn vào cell C5
Hấp dẫn nhỉ? Vậy mà code lại khá đơn giản:
Mã:
Function CommPic(Pic As String, Cel As Range) As String
  On Error Resume Next
  Application.Volatile
  Cel.Comment.Delete
  If Cel.Comment Is Nothing Then Cel.AddComment
  Cel.Comment.Text vbLf
  With Cel.Comment.Shape
    .Left = Cel.Left: .Top = Cel.Top: .Visible = True
    .Width = Cel.Width: .Height = Cel.Height
    .Fill.UserPicture Pic
  End With
End Function
Thí nghiệm:
- Mở Excel, chèn code trên vào module, xong lưu file vào 1 thư mục nào đó
- Copy 1 số hình vào cùng thư mục chưa file Excel (file của tôi có 4 hình AT01.jpg, AT02.jpg, AT03.jpgAT04.jpg)
- Gõ công thức này vào cell B3:
PHP:
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
- Từ cell A5 trở xuống, gõ tên các file hình
- Tại cell B5, gõ công thức =$B$3&A5 và kéo fill xuống
- Tại cell C5, gõ công thúc =CommPic(B5,C5) và kéo fill xuống
Xem thử hình đã được Add vào có ngoạn mục không?
Hy vọng tạo sự dễ dàng cho các bạn, những ai quan tâm đến việc chèn hình ảnh vào bảng tính
Chào anh
Em sử dụng hàm commpic theo hướng dẫn của anh, nhưng với máy macbook dùng hệ điều hành mac os thì không nhấn F9 và hiện hình ảnh được, anh có thể tư vấn cho em làm thế nào để hàm này chạy được trên macbook không ạ
 
Upvote 0
Xưa nay người ta thường chèn hình vào bảng tính bằng 1 thủ tục nào đó (Sub...). Vậy các bạn có nghĩ rằng có thể chèn hình bằng hàm tự tạo không? Tức là ta gõ hàm vào cell, lập tức hình được chèn vào ngay cell ấy!
Ví dụ ta gõ thế này: =CommPic("D:\Pic\Hinh 1.jpg",C5) thì lập tức Hinh 1.jpg được chèn vừa vặn vào cell C5
Hấp dẫn nhỉ? Vậy mà code lại khá đơn giản:
Mã:
Function CommPic(Pic As String, Cel As Range) As String
  On Error Resume Next
  Application.Volatile
  Cel.Comment.Delete
  If Cel.Comment Is Nothing Then Cel.AddComment
  Cel.Comment.Text vbLf
  With Cel.Comment.Shape
    .Left = Cel.Left: .Top = Cel.Top: .Visible = True
    .Width = Cel.Width: .Height = Cel.Height
    .Fill.UserPicture Pic
  End With
End Function
Thí nghiệm:
- Mở Excel, chèn code trên vào module, xong lưu file vào 1 thư mục nào đó
- Copy 1 số hình vào cùng thư mục chưa file Excel (file của tôi có 4 hình AT01.jpg, AT02.jpg, AT03.jpgAT04.jpg)
- Gõ công thức này vào cell B3:
PHP:
=LEFT(CELL("filename",A1),FIND("[",CELL("filename",A1))-1)
- Từ cell A5 trở xuống, gõ tên các file hình
- Tại cell B5, gõ công thức =$B$3&A5 và kéo fill xuống
- Tại cell C5, gõ công thúc =CommPic(B5,C5) và kéo fill xuống
Xem thử hình đã được Add vào có ngoạn mục không?
Hy vọng tạo sự dễ dàng cho các bạn, những ai quan tâm đến việc chèn hình ảnh vào bảng tính
Chào anh
EM có đọc về hàm commpic của anh trên diễn đàn này
Em có có tự viết hàm, nếu chạy trên window thì ok, có thể chạy được và nhấn F9 là tự fill hình vào cell, nhưng khi sang mac os thì không thể chạy được
Anh tư vấn giùm em được không ạ
Các module em viết như sau
1. Hàm lấy link ảnh, ảnh ở trong thư mục tên là /hinhanh, cùng cấp với file excel.
Mã:
Function link(piclink As String) As String
link = ThisWorkbook.Path & "\hinhanh\" & piclink & ".jpg"
If piclink = "" Then link = ""
End Function
'DV-EIKy3eufiqTGkGTXWw9aW5 # Do not remove this line; required for DocVerse merge.
2. Hàm chèn ảnh
Mã:
Function CommPic(Pic As String, Cel As Range) As String  Dim mRng As Range
  On Error Resume Next
  Application.Volatile
  Cel(1, 1).Comment.Delete
  If Cel(1, 1).Comment Is Nothing Then Cel(1, 1).AddComment
  Cel(1, 1).Comment.Text vbLf
  Set mRng = Cel(1, 1).MergeArea
  If mRng Is Nothing Then Set mRng = Cel(1, 1)
  With Cel(1, 1).Comment.Shape
    .Shadow.Visible = msoFalse
    .Line.Visible = msoFalse
    .AutoShapeType = msoShapeRectangle
    .Left = mRng.Left: .Top = mRng.Top: .Visible = True
    .Width = mRng.Width: .Height = mRng.Height
    .Fill.UserPicture Pic
  End With
End Function
'DV-Co5ZXVcg3s3yA29Wn227Ia # Do not remove this line; required for DocVerse merge.

3. Hàm xoá ảnh (khi thay đổi tên hình ảnh sẽ tự động xoá ảnh cũ đi để điền ảnh mới)
Mã:
Option ExplicitFunction Xoaanh(anh As String, Cel As Range) As String
On Error Resume Next
Application.Volatile
If anh = "" Then Cel(1, 1).Comment.Delete
End Function

'DV-v8fKYPi6NLdl401SuhYrFJ # Do not remove this line; required for DocVerse merge.

Sau đó em viết vào file excel như sau
Mã:
=IF(A15<>"",CommPic(link(B15),D15),Xoaanh(B15,D15))
Nếu như trong window hoạt động tốt thì trong mac os không hoạt động được anh à
Mong anh tư vấn giùm em
 
Lần chỉnh sửa cuối:
Upvote 0
Chào anh
Em đã nghiên cứu và làm được
Chỉ cần thay thế link = ThisWorkbook.Path & "\hinhanh\" & piclink & ".jpg"
thay dấu
\ bằng dấu : là được ạ
 
Upvote 0
không biết còn bạn nào vào diễn đàn này không

Mình thấy này rất hay khi mình có ý tưởng và tìm nó thì cả nhà đã có diễn đàn cách đây 2 năm . . . . (thế giới thật bao la)

Sau khi mình sử dụng doạn code để chèn ảnh thì mình thấy dung lượng file tăng đáng kể
file gốc chưa dùng hàm có dung lượng khoảng 200k khi chèn công thức lến đến khoản 500k, còn khi mình chèn trực tiếp thì chỉ khoảng 250k
 
Lần chỉnh sửa cuối:
Upvote 0
Insert nhiều Embed Objects vào File Excel

Mình đang có tình huống như thế này Hiện tại mình có 1 danh sách các số ngẫu nhiên từ mã vạch
và một thư mục hình ảnh và tên của các mã vạch đó dạng số mã vạch.tif vd 78823231.tif

nay mình muốn nhúng embed hình mã mạch vào đúng ô bên cạnh của số mã vạch đó
Hiện mình đang làm bằng tay cứ ô 78823231 mình Insert Embed Object from file chọn hình 78823231.tif vào ô kế bên. Danh sách hàng trăm cái mỗi ngày nên rất lâu

Có bạn nào có thể giúp mình tự động hóa nó ko ạ. mình cảm ơn rất nhiều a.

Hiện tại em phải báo cáo cho khách hàng hiện tại em dùng Insert Embed Object đính file ảnh vào Excel khi họ click vào biểu tượng ảnh sẽ dc phóng to.

Mong dc sự giúp đỡ ạ.
 
Upvote 0
khi phóng to ra thì số liệu có thay đổi gì ko mọi người?
 
Upvote 0
Mọi người giúp với đây là thao tác chèn Embed Object dùng Macro ghi lại ạ
Sub Macro1()
'
' Macro1 Macro
'


'
Range("C7").Select
ActiveSheet.OLEObjects.Add(Filename:="D:\imagesbill\893010000366724.tif", _
Link:=False, DisplayAsIcon:=False).Select
ActiveSheet.Shapes("Object 7").ScaleWidth 0.7592594819, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Object 7").ScaleHeight 0.7592592593, msoFalse, _
msoScaleFromTopLeft
End Sub
 
Upvote 0
Insert nhiều Embed Objects vào File Excel

Thế bạn muốn mọi người giúp cái gì?
Mình đang có tình huống như thế này Hiện tại mình có 1 danh sách các số ngẫu nhiên từ mã vạch
và một thư mục hình ảnh và tên của các mã vạch đó dạng số mã vạch.tif vd 78823231.tif


nay mình muốn nhúng embed hình mã mạch vào đúng ô bên cạnh của số mã vạch đó
Hiện mình đang làm bằng tay cứ ô 78823231 mình Insert Embed Object from file chọn hình 78823231.tif vào ô kế bên. Danh sách hàng trăm cái mỗi ngày nên rất lâu


Có bạn nào có thể giúp mình tự động hóa nó ko ạ. mình cảm ơn rất nhiều a.


mình muốn một dạng script tự động chèn vào khi chạy sẽ so sánh giá trị cột B tìm hình có giá trị giống B + ".tif" chèn hình vào C. vì kho hình mình có định dạng "chuỗi số.tif"
 
Upvote 0
Thế bạn muốn mọi người giúp cái gì?
mình muốn được giúp đỡ một dạng script tự động chèn vào khi chạy sẽ so sánh giá trị cột B tìm hình có giá trị giống B + ".tif" chèn hình vào C. vì kho hình mình có định dạng "chuỗi số.tif"[/QUOTE]

mình có post bài tình huống bên trên và thao tác thủ công ghi lại bằng công cụ macro đó a.
 
Upvote 0
Mình đang có tình huống như thế này Hiện tại mình có 1 danh sách các số ngẫu nhiên từ mã vạch
và một thư mục hình ảnh và tên của các mã vạch đó dạng số mã vạch.tif vd 78823231.tif


nay mình muốn nhúng embed hình mã mạch vào đúng ô bên cạnh của số mã vạch đó
Hiện mình đang làm bằng tay cứ ô 78823231 mình Insert Embed Object from file chọn hình 78823231.tif vào ô kế bên. Danh sách hàng trăm cái mỗi ngày nên rất lâu


Có bạn nào có thể giúp mình tự động hóa nó ko ạ. mình cảm ơn rất nhiều a.


mình muốn một dạng script tự động chèn vào khi chạy sẽ so sánh giá trị cột B tìm hình có giá trị giống B + ".tif" chèn hình vào C. vì kho hình mình có định dạng "chuỗi số.tif"

Thế sao bạn không áp dụng code tại bài 1 của topic này?
 
Upvote 0
Em đang đọc dở nhưng thấy đề tài hay quá nên đánh dấu để tối về đọc tiếp. Mong BQT cho phép. Hi
 
Upvote 0
Cảm ơn các bạn đã giải đáp do mình đầu tiên cũng ko biết code cho lắm mình thấy code bài #1 là chèn hình ảnh còn mình là nhúng ảnh embed ( ko cần thư mục ảnh kèm theo file excel). nên có gì sai sót mong cá bạn bỏ qua a.
 
Upvote 0
File compic rất hay nhưng cho mình hỏi thêm là khi in thì mình không in được hình, Anh chị vui lòng hướng dẫn thêm, cám ơn!!!
 
Upvote 0
File compic rất hay nhưng cho mình hỏi thêm là khi in thì mình không in được hình, Anh chị vui lòng hướng dẫn thêm, cám ơn!!!
Chẳng phải trong topic này đã có người hỏi vấn đề tương tự và đã được trả lời tại bài 14 rồi sao?
 
Upvote 0

Chẳng phải trong topic này đã có người hỏi vấn đề tương tự và đã được trả lời tại bài 14 rồi sao?

Chân thành cám ơn đã gửi link cho mình! Mình đã thử làm theo nhưng vẫn không in được hình, bạn vui lòng hướng dẫn thêm cho mình
 

File đính kèm

  • Untitled-1 copy.jpg
    Untitled-1 copy.jpg
    122.9 KB · Đọc: 42
  • Untitled-2 copy.jpg
    Untitled-2 copy.jpg
    96.2 KB · Đọc: 24
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom