Chèn hình vào cell VBA

Liên hệ QC

voduyminh0504

Thành viên chính thức
Tham gia
11/2/15
Bài viết
51
Được thích
12
Chào các bạn
(Tôi có gửi thread trong một thư mục khác, được phản ánh là nhầm nên tôi gửi lại, xin lỗi nếu các bạn phải đọc hai lần)

Rất mong nhận được sự hỗ trợ của các bạn với vấn đề dưới đây của tôi liên quan đến việc chèn hình vào file excel
Tôi dùng đoạn code sau để chèn hình vào
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A:A]) Is Nothing Or Target.Row = 1 Then Exit Sub
On Error GoTo Err_
Target(, 2).Worksheet.Shapes(Target.Address).Delete
Err_:
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Target.Value & ".jpg")
.Name = Target.Address
.Top = Target.Top
.Left = Target(, 2).Left
.ShapeRange.LockAspectRatio = msoFalse
.ShapeRange.Height = Target.Height
.ShapeRange.Width = Target(, 2).Width
End With
Target.Offset(1, 0).Select
End Sub

Hai vấn đề của tôi cần được hỗ trợ như sau
1) Tôi muốn file hình được dẫn vào từ một folder khác (thay vì cùng folder với file chứa file excel)
2) Tôi muốn hình tự động hiện ra khi tên hình trong ô ở cột A thay đổi (hoặc cột chỉ định [A:A]), hiện nay hình chỉ hiện ra khi gõ enter), do vậy khi cần thay đổi hình thì rất bất tiện, cũng như hình không thể tự delete khi dữ liệu ở cột A (hoặc cột chỉ định) không còn hoặc thay đổi để có hình khác.

Tôi xin được cám ơn các bạn trước.
Trước đây tôi thường nhận được sự hỗ trợ rất nhiệt tình và nhanh chóng của các bạn, nhờ thế tôi giải quyết được rất nhiều vấn đề của tôi. Xin một lần nữa cám ơn các bạn.
 
1) Tôi muốn file hình được dẫn vào từ một folder khác (thay vì cùng folder với file chứa file excel)
Thay
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Target.Value & ".jpg")

thành:
With ActiveSheet.Pictures.Insert(đường_dẫn_folder_chứa_ảnh & "\" & Target.Value & ".jpg")

2) Tôi muốn hình tự động hiện ra khi tên hình trong ô ở cột A thay đổi (hoặc cột chỉ định [A:A]), hiện nay hình chỉ hiện ra khi gõ enter),
"tên hình trong ô ở cột A thay đổi", mình đang làm chỗ này như nào?
 
Upvote 0
Thay
With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Target.Value & ".jpg")

thành:
With ActiveSheet.Pictures.Insert(đường_dẫn_folder_chứa_ảnh & "\" & Target.Value & ".jpg")


"tên hình trong ô ở cột A thay đổi", mình đang làm chỗ này như nào?

Cám ơn bạn dã phản hồi nhanh chóng
Tuy nhiên tôi thay
With ActiveSheet.Pictures.Insert(D:\DATA & "\" & Target.Value & ".jpg")
Thì code không nhận.


Về vấn đề thứ hai thì hiện nay sau khi nhập tên hình mình phải gõ enter thì nó mới nhẩy hình ra. Sau đó có xóa tên hình ở cột A thì hình ở cột B vẫn còn.
Mình muốn ngay khi thay tên (theo hàm) thì hình sẽ thay đổi mà không cần gõ enter, còn khi không có tên hình thì hình sẽ tự động delete.

Một lần nữa, cám ơn bạn đã phản hồi nhanh chóng
 
Upvote 0
Đường dẫn là một chuỗi bạn à. Mình nắm được chỗ này không?

xóa tên hình ở cột A thì hình ở cột B vẫn còn
Vậy mình thêm code vào: khi xóa dữ liệu thì xóa hình.
muốn ngay khi thay tên (theo hàm) thì hình sẽ thay đổi mà không cần gõ enter,
Theo hàm thì mình cần bắt sự kiện theo nguồn thay đổi dữ liệu, chứ theo cột A chứa công thức đâu có được.
 
Upvote 0
Cám ơn bạn nhiều
Nhưng "D:\DATA" nó cũng chẳng nhận.
 
Upvote 0
Cám ơn bạn nhiều.
Tôi đã giải quyết được cái "D:\DATA\" đó.
Chỉ là tôi chuyển ra cho gọn, nhưng quên mất việc đổi tên hình.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom