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

anhtuan1066

Thành viên gạo cội
Tham gia ngày
10 Tháng ba 2007
Bài viết
5,814
Được thích
6,855
Điểm
860
Tuổi
54
Nơi ở
Biên Hòa, Đồng Nai
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

HOANG 1978

Thành viên mới
Tham gia ngày
29 Tháng mười hai 2010
Bài viết
8
Được thích
3
Điểm
365
Em cảm on anh Tuấn rất nhiều có được hàm này mọi công việc của em trở nên dễ dàng hơn
 

HOANG 1978

Thành viên mới
Tham gia ngày
29 Tháng mười hai 2010
Bài viết
8
Được thích
3
Điểm
365
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,
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,659
Được thích
53,399
Điểm
11,910
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
 

cavoi54

Thành viên mới
Tham gia ngày
18 Tháng bảy 2011
Bài viết
31
Được thích
0
Điểm
363
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?
 

cavoi54

Thành viên mới
Tham gia ngày
18 Tháng bảy 2011
Bài viết
31
Được thích
0
Điểm
363
Đổi hình con trỏ chuột Excel

Làm sao đôỉ hình con trỏ chuột trong excel được?
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,659
Được thích
53,399
Điểm
11,910

cavoi54

Thành viên mới
Tham gia ngày
18 Tháng bảy 2011
Bài viết
31
Được thích
0
Điểm
363
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)
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia ngày
17 Tháng tám 2008
Bài viết
7,738
Được thích
15,374
Điểm
1,910
Tuổi
44
Nơi ở
TPHCM

anhtuan1066

Thành viên gạo cội
Tham gia ngày
10 Tháng ba 2007
Bài viết
5,814
Được thích
6,855
Điểm
860
Tuổi
54
Nơi ở
Biên Hòa, Đồng Nai
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

vitbau86

Thành viên chính thức
Tham gia ngày
9 Tháng bảy 2011
Bài viết
58
Được thích
5
Điểm
0
Tuổi
31
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
 

anhtuan1066

Thành viên gạo cội
Tham gia ngày
10 Tháng ba 2007
Bài viết
5,814
Được thích
6,855
Điểm
860
Tuổi
54
Nơi ở
Biên Hòa, Đồng Nai
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)
 

duongbinhnghiep

Thành viên mới
Tham gia ngày
24 Tháng mười một 2009
Bài viết
2
Được thích
0
Điểm
0
Tuổi
37
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 !
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,659
Được thích
53,399
Điểm
11,910

duongbinhnghiep

Thành viên mới
Tham gia ngày
24 Tháng mười một 2009
Bài viết
2
Được thích
0
Điểm
0
Tuổi
37
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 !
 

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia ngày
5 Tháng sáu 2008
Bài viết
30,659
Được thích
53,399
Điểm
11,910
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?
 

Hoàng Trọng Nghĩa

Chuyên gia GPE
Thành viên BQT
Moderator
Tham gia ngày
17 Tháng tám 2008
Bài viết
7,738
Được thích
15,374
Điểm
1,910
Tuổi
44
Nơi ở
TPHCM
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:

vitbau86

Thành viên chính thức
Tham gia ngày
9 Tháng bảy 2011
Bài viết
58
Được thích
5
Điểm
0
Tuổi
31
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ỉ
 

HOANG 1978

Thành viên mới
Tham gia ngày
29 Tháng mười hai 2010
Bài viết
8
Được thích
3
Điểm
365
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.
 
Top Bottom