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,594
Anh Tuấn cho em hỏi thêm với code này nếu em muốn thay đổi kích cở hình em phải làm sao để cho ra được những hình ảnh theo ý muốn
Xin anh vui lòng chỉ điểm cho.


Cảm ơn anh nhiều,
 
Upvote 0
Anh Tuấn cho em hỏi thêm với code này nếu em muốn thay đổi kích cở hình em phải làm sao để cho ra được những hình ảnh theo ý muốn
Xin anh vui lòng chỉ điểm cho.


Cảm ơn anh nhiều,
Bạn chỉ cần thay đổi chiều cao, chiều rộng của cell mà bạn đang gõ hàm rồi bấm F9 là tự động hình sẽ được chỉnh theo kích thước mới của cell
Thử xem
 
Upvote 0
Chèn hình động vào bản tính

Bạ n có cá ch nà o chè n hì nh độ ng và o bả n tinh duoc ko vay?
 
Upvote 0
Đổi hình con trỏ chuột Excel

Làm sao đôỉ hình con trỏ chuột trong excel được?
 
Upvote 0
Upvote 0
Nhúng file Flash vào excel tức là copy hay sao vậy bạn (làm phiền bạn một lần nữa vậy)
 
Upvote 0
Nhân tiện có bạn thắc mắc về hàm này liên quan đến Merge cell tại đây:
http://www.giaiphapexcel.com/forum/...đồi-hình-ảnh-theo-danh-sách-và-insert-copy-đc
Tôi cải tiến lại hàm này như sau:
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 '<--- Thêm vào nếu không muốn có Shadow
    .Line.Visible = msoFalse      '<--- Thêm vào nếu không muốn có đường viền
    .AutoShapeType = msoShapeRectangle  '<--- Thêm vào để che mũi tên đỏ trong cell
    .Left = mRng.Left: .Top = mRng.Top: .Visible = True
    .Width = mRng.Width: .Height = mRng.Height
    .Fill.UserPicture Pic
  End With
End Function
Cú pháp sử dụng vẫn như cũ
 

File đính kèm

  • CommentPicture.rar
    120.4 KB · Đọc: 2,376
Upvote 0
bác có thể làm biến mất hoàn toàn hay cho nó trong suốt cái mũi tên màu đen ko
8-15-2011 12-07-15 PM.jpg
tại vì em ko fill ảnh vừa khít cell mà cho nó nhỏ hơn cell, nếu ko nó sẽ che mất cái đường border của cell, vì thế nó bị lộ cái mũi tên ý
8-15-2011 12-12-13 PM.jpg
 
Upvote 0
bác có thể làm biến mất hoàn toàn hay cho nó trong suốt cái mũi tên màu đen ko
View attachment 68450
tại vì em ko fill ảnh vừa khít cell mà cho nó nhỏ hơn cell, nếu ko nó sẽ che mất cái đường border của cell, vì thế nó bị lộ cái mũi tên ý
View attachment 68451

Không có cách nào làm mất mũi tên đỏ của Comment đâu bạn à, chỉ có cách thay đổi kiểu comment để che khuất nó thôi (như tôi đã làm)
 
Upvote 0
chen anh

Ban Tuan lam vay la tot roi ! Ban cho min hoi ! Lam xong rui minh view va xem sao khog hien thi anh gi het ! Vaylam sao in duoc anh do day Ban ! Giup min voi nhe! Cam on ban nhieu !
 
Upvote 0
Upvote 0
Anh Tuan ơi ! Anh có cách nào hiển thị và in hình ảnh được luôn không ! Em chèn được mà khi in ra chẳng thấy gì hết ! Anh Giúp em với nhé ! Cám ơn anh nhiều !
 
Upvote 0
Anh Tuan ơi ! Anh có cách nào hiển thị và in hình ảnh được luôn không ! Em chèn được mà khi in ra chẳng thấy gì hết ! Anh Giúp em với nhé ! Cám ơn anh nhiều !
Bạn đã hỏi ở bài 13 và cũng đã trả lời cho bạn tại bài 14 rồi còn gì! Không xem sao?
 
Upvote 0
Không có cách nào làm mất mũi tên đỏ của Comment đâu bạn à, chỉ có cách thay đổi kiểu comment để che khuất nó thôi (như tôi đã làm)

Mũi tên thì không thể làm mất, nhưng cái màu đỏ thì em cho nó biến được đấy Thầy!

Sử dụng một trong 3 thủ tục này:

Mã:
Sub Test()
'  Application.DisplayCommentIndicator = xlCommentIndicatorOnly
'  Application.DisplayCommentIndicator = xlCommentAndIndicator
  Application.DisplayCommentIndicator = [B]xlNoIndicator[/B]
End Sub

Nhưng tốt nhất KHÔNG sử dụng, vì mất công phải set nó lại hiện trạng ban đầu.
 
Lần chỉnh sửa cuối:
Upvote 0
các bác ơi, chất lượng hình ảnh khi in ra rất kém, mờ lắm, có cách nào khắc phục ko nhỉ
 
Upvote 0
Em cảm ơn anh Tuấn nhiều phần anh cải tiên lại giúp em thay đổi kích cở hình linh hoạt hơn
Em cảm ơn anh Tuấn nhiều lắm.
 
Upvote 0
Web KT
Back
Top Bottom