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
các bác ơi, em muốn hide dòng chứa hàm thì ảnh cũng hide theo luôn thì làm thế nào vậy?
 
Upvote 0
hình nó ko bị ẩn, nó chỉ bị hẹp theo chiều cao thôi !$@!!
 
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!
cho em hỏi mình không dùng trong 1 cel nữa mà mình dùng kết hợp từ A2:D5 thì sửa hàm sao.
cảm ơn!
 
Upvote 0
cho mình bàn thêm vấn đề này tí nhé.
Mình đọc bài 1o và dùng như vậy, nhưng khi mình không muốn cho ai sửa bằng cách: protect sheet (không cho chỉnh sửa), thì khi đó hình không lên.
Anh, chị nào có thể giải thích tại sao hoặc khắc phục nó hiện lên được thế nào không chỉ cho em với. em cảm ơn. (em có gởi kèm theo file ví dụ)
 

File đính kèm

  • CommentPicture.rar
    83.4 KB · Đọc: 113
Upvote 0
cho mình bàn thêm vấn đề này tí nhé.
Mình đọc bài 1o và dùng như vậy, nhưng khi mình không muốn cho ai sửa bằng cách: protect sheet (không cho chỉnh sửa), thì khi đó hình không lên.
Anh, chị nào có thể giải thích tại sao hoặc khắc phục nó hiện lên được thế nào không chỉ cho em với. em cảm ơn. (em có gởi kèm theo file ví dụ)
Khi hộp Protect sheet hiện ra, hãy check mục "Edit Objects"

untitled.JPG

Nói thiệt, mình quá chán với những bài có liên quan đến Protect ---> Chả được cái tích sự gì
 
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

Xin hỏi làm thế nào mà bỏ đi đc cái comment nhỉ
 
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 Tuấn, em dùng code anh viết nhưng khi in ra nó sẽ bị dời hình xuống 1 ô, ví dụ em dùng công thức này với ô B2, in ra nó sẽ nằm hình ở ô B3, anh có cách xử lí lỗi này không anh
Cảm ơn anh vì bài viết hay
 
Upvote 0
anh Tuấn có thể thay đổi cho các hình đưa ra ngoài phía phải cell giống như thủ công không?
chỉ bao giờ mình rê con chuột vào thì mới nổi hình lên, thank anh Tuấn
 
Upvote 0
Anh Tuấn viết code này rất hay,nhưng em muốn anh viết thêm một lệnh để chuyển hình sang bên phía phải ô chỉ khi nào mình rê chuột thì mới nổi hình lên, như vậy mới thuận tiện trong việc quản lý nhân viên không phải kéo giản hàng ra trông xấu. thank anh
 
Upvote 0
Anh Tuấn viết code này rất hay,nhưng em muốn anh viết thêm một lệnh để chuyển hình sang bên phía phải ô chỉ khi nào mình rê chuột thì mới nổi hình lên, như vậy mới thuận tiện trong việc quản lý nhân viên không phải kéo giản hàng ra trông xấu. thank anh
Thêm dòng này vào hàm CommPic là được rồi:
Application.DisplayCommentIndicator = -1
 
Upvote 0
Bác anhtuan1066

cho em hỏi là khi đưa được ảnh vào trong comment rồi em mốn nền ảnh là "No Fill" thì làm thế nào a?
 
Upvote 0
Đúng là trong 3 người cùng đi , có 1 người là thầy . xin cám ơn !
 
Upvote 0
Em thấy trong file test của anh bắt buộc phải có file hình đi kèm theo trong folder thì hình chèn trong excel mới chạy được. Vậy anh cho em hỏi có cách nào không cần file hình đi chung với file excel mà hình vẫn chèn tự động được không? vì bản báo cáo của em file gửi qua mail công ty, nếu phải kèm theo file hình nữa thì kích thước file sẽ rất nặng. Anh giúp em với ! thanks Anh.
 
Upvote 0
Em thấy trong file test của anh bắt buộc phải có file hình đi kèm theo trong folder thì hình chèn trong excel mới chạy được. Vậy anh cho em hỏi có cách nào không cần file hình đi chung với file excel mà hình vẫn chèn tự động được không? vì bản báo cáo của em file gửi qua mail công ty, nếu phải kèm theo file hình nữa thì kích thước file sẽ rất nặng. Anh giúp em với ! thanks Anh.
Vậy theo bạn thì hình từ đâu mà có?
Có vài cách như sau:
1> Hình được cho vào 1 folder (như bài 1)
2> Hình được chèn thẳng vào trong 1 sheet nào đó trong file
3> Hình được đặt trên server mạng cty
Riêng với cách 2 thì cũng làm cho file nặng lên thêm vì dung lượng hình trong sheet và cũng không thể dùng cách này để chèn hình vào Comment
Cách 3 cũng khả thi nếu bạn biết lưu hình lên server
Ngoài ra, nếu máy tính của người nhận có kết nối internet, ta có thể post hình lên web (photobucket chẳng hạn) rồi chèn hình vào comment bằng link hình
 
Lần chỉnh sửa cuối:
Upvote 0
Xung Đột với Checkbox

Em phát hiện ra code này bị xung đột với checkbox. Khi nhấn checkbox để tạo giá trị true/false file lập tức bị out khỏi excel.

Các anh xem có thể tìm ra nguyên nhân để khắc phục được không ;;;;;;;;;;;. Code này rất hay em đang định dùng vào công việc của mình. cảm ơn các anh!
 

File đính kèm

  • ComPic.xls
    55.5 KB · Đọc: 94
Upvote 0
Web KT
Back
Top Bottom