Help! Cải Tiến Code VBA Chèn Hình Vào File Excel

Giải Pháp Excel
  • Trang chủ Có gì mới Hoạt động gần nhất Tác giả
  • Diễn đàn Tìm bài viết mới Tìm theo chuyên mục
  • Video New Video về Excel Video về tin học khác Tin tức về tin học chung
  • Thông tin mới Featured content Tìm bài mới Tài Nguyên Mới Hoạt động gần nhất
  • Tài nguyên Đánh giá mới nhất Tìm tài nguyên
  • Facebook
  • Đóng góp
Đăng nhập Đăng Ký Có gì mới? Tìm kiếm

Tìm kiếm

Mọi nơi Đề tài Diễn đàn này Đề tài này Chỉ tìm trong tiêu đề Note Bởi: Tìm kiếm Tìm nâng cao…
  • Tìm bài viết mới
  • Tìm theo chuyên mục
Menu Đăng nhập Đăng Ký Install the app Install How to install the app on iOS

Follow along with the video below to see how to install our site as a web app on your home screen.

Note: This feature may not be available in some browsers.

  • Khách ơi! GPE thông tin đến bạn ấn phẩm "lập trình VBA trong Excel": - Phần cơ bản - Phần Nâng Cao - VBA trong Excel - Cải thiện và tăng tốc
  • Trang chủ
  • Diễn đàn
  • Lập Trình với Excel
You are using an out of date browser. It may not display this or other websites correctly.You should upgrade or use an alternative browser. Help! Cải tiến code VBA chèn hình vào file Excel (1 người xem)
  • Thread starter Thread starter zukura
  • Ngày gửi Ngày gửi 28/1/19
Liên hệ QC

Người dùng đang xem chủ đề này

Đang trực tuyến: 2 (Thành viên: 0, Khách: 2) Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1 Cả nhà giúp em với. Vấn đề của em là khi có 1 cột mã hàng, thì excel sẽ tự chèn ảnh có sẵn (trong thư mục cố định, tên file là tên của mã hàng) vào cột bên cạnh. Trước đó em có xài cách của 1 bác khác là viết 1 hàm riêng cho file excel đó, hàm compic(đường dẫn hình). Là dạng chèn hình vào comment. Nhưng do lúc chạy rất hay bị văng ra nên không được tiện lắm. Hôm qua em mò trên mạng được code VBA của 1 bác về chèn hình vào excel sau khi ta gõ mã của hình đó. Thấy code của bác này chạy rất nhẹ nhàng và chèn trực tiếp (chứ không phải comment), nên em rất thích. Nhưng chưa đủ áp dụng vào công việc của em, nhờ các bác cao thủ giúp em với ạ: - File đính kèm đã có code chạy cho cột mã 1 - Nếu em có thêm cột mã 2 thì code sẽ viết như thế nào? (Nếu dạng hàm thì quá dễ, hàm ở đâu hình sẽ hiện ở đó) - Cột mã nếu là công thức hoặc khi copy dán thì code không chạy (cả ngàn mã không thể gõ tay rồi enter được) -> lỗi type miss match - Nếu trong 10 mã mà có 5 mã bị sai, bỏ trống -> 5 mã còn lại vẫn hiện hình, 5 mã kia không hiện (đằng này báo lỗi và ko hiện tất) Giúp em với nha.

File đính kèm

  • Cach chen hinh vao excel.rar Cach chen hinh vao excel.rar 28.4 KB · Đọc: 276
Sắp xếp theo thời gian sắp xếp theo bầu chọn B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
zukura đã viết: - Cột mã nếu là công thức hoặc khi copy dán thì code không chạy (cả ngàn mã không thể gõ tay rồi enter được) -> lỗi type miss match Nhấp chuột vào đây để mở rộng...
Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã: Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Upvote 0 Trungpro04

Trungpro04

Thành viên mới
Tham gia 19/1/19 Bài viết 9 Được thích 2 Chèn ảnh và cố định mới siêu chứ chèn ảnh toàn thừa thì hỏng Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
Trungpro04 đã viết: Chèn ảnh và cố định mới siêu chứ chèn ảnh toàn thừa thì hỏng Nhấp chuột vào đây để mở rộng...
Bác ấy quá siêu bác ạ. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã: Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Em cảm ơn bác rất nhiều đã hướng dẫn cụ thể như vậy. Em là dân copy xài chứ không rành code được bác dành time hướng dẫn vậy em cảm ơn rất nhiều ạ vì mò trên mạng không có hoặc giải pháp không được như mong đợi. Nói chung hơn em mong đợi nhiều lắm bác. Upvote 0 Trungpro04

Trungpro04

Thành viên mới
Tham gia 19/1/19 Bài viết 9 Được thích 2
zukura đã viết: Em cảm ơn bác rất nhiều đã hướng dẫn cụ thể như vậy. Em là dân copy xài chứ không rành code được bác dành time hướng dẫn vậy em cảm ơn rất nhiều ạ vì mò trên mạng không có hoặc giải pháp không được như mong đợi. Nói chung hơn em mong đợi nhiều lắm bác. Nhấp chuột vào đây để mở rộng...
Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình chen-anh.png Upvote 0 B

babyheomoi

Thành viên thường trực
Tham gia 22/9/13 Bài viết 397 Được thích 91
Trungpro04 đã viết: Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình View attachment 211757 Nhấp chuột vào đây để mở rộng...
Bác chia sẻ cho anh em học hỏi luôn đi Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819 Phải chăng "Linked Picture"? Quá tầm thường. Nhưng lúc đó phải nhập hết các ảnh có trong kho vào sheet. Để khi đổ hàng loạt Mã bất kỳ vào cột A thì có ảnh để mà link. Hay là còn cách tuyệt mật nào chăng? Diễn đàn hoạt động theo cách người biết rồi giúp người chưa biết. Nếu có cách hay thì có lẽ nên chia sẻ thay vì tạo ra sự bí ẩn. Hoặc im lặng giữ cho riêng mình. Lần chỉnh sửa cuối: 29/1/19 Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
Trungpro04 đã viết: Chèn ảnh cố định không cần dùng code nhé bạn có gì liên hệ mình View attachment 211757 Nhấp chuột vào đây để mở rộng...
Nếu không dùng code thì càng nhẹ. Nếu file 10.000 dòng mà dùng module khi mình insert 1 cột sẽ đơ máy luôn. Nếu được anh chia sẽ cho mọi người đi. Có một số trang họ bán tool làm báo giá 700k mà bác batman chia sẽ free cho mọi người luôn đấy. Nói chung em thấy xài rất ổn còn hay hơn tool họ quảng cáo. Lần chỉnh sửa cuối: 29/1/19 Upvote 0 Kiều Mạnh

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia 9/6/12 Bài viết 5,538 Được thích 4,135 Giới tính Nam nếu ko dùng code mà chèn 10.000 ảnh có tới tết công gô sao .... + kéo hàm xuống nữa file nó to và nặng như cái xe lu thì có mà tèo téo teo chắc luôn -0-0-0-===\. Upvote 0 be_09

be_09

Biên Hòa, Đồng Nai
Tham gia 9/4/11 Bài viết 9,972 Được thích 9,884 Nghề nghiệp Công chức
kieu manh đã viết: nếu ko dùng code mà chèn 10.000 ảnh có tới tết công gô sao .... + kéo hàm xuống nữa file nó to và nặng như cái xe lu thì có mà tèo téo teo chắc luôn Nhấp chuột vào đây để mở rộng...
Anh nghĩ chủ Topic muốn làm 1 bảng báo giá nhưng lại không nêu vấn đề cụ thể mà lại hỏi về cách chèn hình. Nếu có đến 10.000 hình mà dùng hàm là bức tử, theo anh thì chơi vầy. 1/ Làm 1 danh mục chứa dữ liệu có tên 10.000 hình và tất cả nội dung cần như chủng loại, đặc điểm, đơn giá. 2/ 1 Folder chứa tất cả các hình với tên File tương ứng trong 1 cột chứa danh mục. 3/ Sử dụng 1 UserForm với ListBox chứa danh mục. 4/ Khi mở Form thì tìm theo chủng loại chọn và gán dữ liệu lên sheet nó tự tra và lấy hình trong Folder và gán hình vào Cell tương ứng với từng danh mục. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã: Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Bác batman ơi trường hợp em muốn mở rộng thêm cột hình thứ 3 thì code sửa lại như thế nào ạ? Em thêm vào If Intersect(Target, Union([A2:A10000], [D2:D10000],[xxxxxxxxxxx])) Is Nothing Then Exit Sub thì không chạy. Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819 Giả sử thêm cột G Mã: Sao chép. If Intersect(Target, Union([A2:A10000], [D2: D10000], [G2:G10000])) Is Nothing Then Exit Sub Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819 Dùng UserForm chắc không hợp với trường hợp của chủ chủ đề.
cả ngàn mã không thể gõ tay rồi enter được Nhấp chuột vào đây để mở rộng...
1000 mã hay 10 mã thì người ta cũng đã biết rồi. Chả lý gì lại tạo thêm UserForm rồi chọn trong ListBox. Rồi thì cũng phải dùng code để chèn hình. Dù là cách gì thì cũng phải hoặc chèn hình bằng tay hoặc chèn bằng code. Nếu dùng Linked Picture thì chính là chèn bằng tay. Linked Picture là tạo "khung" và dùng công thức. Nhưng tập tin phải đã có toàn bộ hình có trong kho, vì đơn giản là không thể biết được sẽ phải chèn hình nào. Nếu sheet không có vd. 93.jpg mà người ta lại gõ đúng mã đó thì lấy đâu ra hình để mà link? Mà chèn 100 hình không dùng code thì là chèn bằng tay. Ngồi "Insert -> Picture -> chọn tập tin" 100 lần có lẽ chết còn sướng hơn. Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
batman1 đã viết: Dùng UserForm chắc không hợp với trường hợp của chủ chủ đề. 1000 mã hay 10 mã thì người ta cũng đã biết rồi. Chả lý gì lại tạo thêm UserForm rồi chọn trong ListBox. Rồi thì cũng phải dùng code để chèn hình. Dù là cách gì thì cũng phải hoặc chèn hình bằng tay hoặc chèn bằng code. Nếu dùng Linked Picture thì chính là chèn bằng tay. Linked Picture là tạo "khung" và dùng công thức. Nhưng tập tin phải đã có toàn bộ hình có trong kho, vì đơn giản là không thể biết được sẽ phải chèn hình nào. Nếu sheet không có vd. 93.jpg mà người ta lại gõ đúng mã đó thì lấy đâu ra hình để mà link? Mà chèn 100 hình không dùng code thì là chèn bằng tay. Ngồi "Insert -> Picture -> chọn tập tin" 100 lần có lẽ chết còn sướng hơn. Nhấp chuột vào đây để mở rộng...
Có cách nào file hình thì vẫn ở thư mục, file excel thì không nhúng hình, khi cần hiển thị thì mới hiển thị từ file của hình, nhưng thế thì file không phải chứa hình? Bác nghĩ Excel cho phép vậy không? Lưu ý chủ topic: file hình kiểu nhúng vào excel nên là hình nhỏ, dung lượng nhỏ thôi, còn nếu lớn mà nhiều thì file excel sẽ phình to Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Giả sử thêm cột G Mã: Sao chép. If Intersect(Target, Union([A2:A10000], [D2: D10000], [G2:G10000])) Is Nothing Then Exit Sub Nhấp chuột vào đây để mở rộng...
Em đã thêm và không được bác ơi.

File đính kèm

  • Cach 3 - Dung module giaiphapexcel.rar Cach 3 - Dung module giaiphapexcel.rar 33 KB · Đọc: 104
Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
zukura đã viết: Em đã thêm và không được bác ơi. Nhấp chuột vào đây để mở rộng...
Tôi thấy bình thường mà, bạn phải nhập tên hình vào cột G, hay D, hay A Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
tam888 đã viết: Có cách nào file hình thì vẫn ở thư mục, file excel thì không nhúng hình, khi cần hiển thị thì mới hiển thị từ file của hình, nhưng thế thì file không phải chứa hình? Bác nghĩ Excel cho phép vậy không? Lưu ý chủ topic: file hình kiểu nhúng vào excel nên là hình nhỏ, dung lượng nhỏ thôi, còn nếu lớn mà nhiều thì file excel sẽ phình to Nhấp chuột vào đây để mở rộng...
Cụ thể thì là thế nào? Tôi chưa hình dung được. Tức nhìn vào cell chả thấy gì. Nhưng khi bạn hô: "Hiện" thì tự dưng xuất hiện hình to nguyên bản, và khi hô: "Ẩn" thì cell lại "trắng tinh"? Mà làm sao Excel biết khi nào bạn hô? Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
batman1 đã viết: Cụ thể thì là thế nào? Tôi chưa hình dung được. Tức nhìn vào cell cha thấy gì. Nhưng khi bạn hô: "Hiện" thì tự dưng xuất hiện hình to nguyên bản, và khi hô: "Ẩn" thì cell lại "trắng tinh"? Mà làm sao Excel biết khi nào bạn hô? Nhấp chuột vào đây để mở rộng...
Dạ, tức là hình không nhúng vào excel làm tăng dung lượng Chỉ khi mở file hoặc thay đổi giá trị tên hình thì hình mới được load lên. Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
tam888 đã viết: Dạ, tức là hình không nhúng vào excel làm tăng dung lượng Chỉ khi mở file hoặc thay đổi giá trị tên hình thì hình mới được load lên. Nhấp chuột vào đây để mở rộng...
Dung lượng đâu thành vấn đề vì ứng dụng chủ yếu gọi hình của những mặt hàng cần thiết thôi chứ không lưu hình 10.000 món hàng. Code sẽ tự Replace những hình cũ để thay bằng hình mới khi mình gõ mã mới -> không làm phình to file excel Nói chung mình thấy cách này quá tuyệt rồi. hihi Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
zukura đã viết: Dung lượng đâu thành vấn đề vì ứng dụng chủ yếu gọi hình của những mặt hàng cần thiết thôi chứ không lưu hình 10.000 món hàng. Code sẽ tự Replace những hình cũ để thay bằng hình mới khi mình gõ mã mới -> không làm phình to file excel Nói chung mình thấy cách này quá tuyệt rồi. hihi Nhấp chuột vào đây để mở rộng...
Đúng thế, nhưng tôi đang muốn hỏi bác batman1 về mở rộng thì có hay không thôi. Còn bài của bạn thì gặp đúng thầy rồi, bác batman1 giúp thế là tuyệt Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
tam888 đã viết: Dạ, tức là hình không nhúng vào excel làm tăng dung lượng Chỉ khi mở file hoặc thay đổi giá trị tên hình thì hình mới được load lên. Nhấp chuột vào đây để mở rộng...
Thì tôi viết rồi mà
Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nhấp chuột vào đây để mở rộng...
Upvote 0 be_09

be_09

Biên Hòa, Đồng Nai
Tham gia 9/4/11 Bài viết 9,972 Được thích 9,884 Nghề nghiệp Công chức
tam888 đã viết: Có cách nào file hình thì vẫn ở thư mục, file excel thì không nhúng hình, khi cần hiển thị thì mới hiển thị từ file của hình, nhưng thế thì file không phải chứa hình? Bác nghĩ Excel cho phép vậy không? Lưu ý chủ topic: file hình kiểu nhúng vào excel nên là hình nhỏ, dung lượng nhỏ thôi, còn nếu lớn mà nhiều thì file excel sẽ phình to Nhấp chuột vào đây để mở rộng...
Đây là File tôi làm như đã nêu ở bài 12 sử dụng UserForm với ListBox và chọn nhập liệu một loạt. A_1.JPG Khi nhấn nút lấy giá và gán ảnh nó lấy hình trong Folder và gán vào. A_2.JPGA_3.JPG Lần chỉnh sửa cuối: 29/1/19 Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
zukura đã viết: Dung lượng đâu thành vấn đề vì ứng dụng chủ yếu gọi hình của những mặt hàng cần thiết thôi chứ không lưu hình 10.000 món hàng. Code sẽ tự Replace những hình cũ để thay bằng hình mới khi mình gõ mã mới -> không làm phình to file excel Nói chung mình thấy cách này quá tuyệt rồi. hihi Nhấp chuột vào đây để mở rộng...
Muốn không làm phình to thì Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True ---------- Bạn hãy nhập vào 100 mã, tức 100 hình nhưng với Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) sau đó lưu lại tập tin. Ghi dung lượng tập tin vào sổ tay. Sau đó ghi copy/paste 100 mã sang vd. K1:K100 - xóa 100 mã đã nhập ở cột A -> sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True -> copy 100 mã từ K1:K10đ -> dán vào cột A để có 100 ảnh như lần trước ở cột B -> lưu lại tập tin -> kiểm tra dung lượng tập tin. Dung lượng lần 2 nhỏ hơn dung lượng lần 1 vì các ảnh chỉ được link vào mà không được nhúng vĩnh viễn. Tôi thường hướng dẫn chi tiết, bỏ nhiều công sức, nhưng ít ai đọc kỹ. Phí công quá. Bài đã được tự động gộp: 29/1/19 Hàng loạt hay không thì cuối cùng cũng phải có code dùng để chèn ảnh mà thôi. Còn nếu người ta đã biết cần dán những mã nào, có thể là copy hàng loạt mã từ đâu đó, thì hiện UserForm + ListBox để mà làm gì? Tôi nghĩ người hỏi chỉ bí code chứ rất có thể UserForm và ListBox người ta còn giỏi hơn mọi người. Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819 @zukura: Trong Sub Worksheet_Change có gọi InsertPicture để chèn ảnh. Mục đích đặt trong Worksheet_Change là để khi thay đổi mã trong cột A, D, G thì ảnh sẽ được chèn vào sheet. Nhưng sub InsertPicture bạn có thể gọi ở bất cứ đâu để chèn ảnh vào sheet: từ macro XYZ trong Module1, từ code trong UserForm v...v Đơn giản InsertPicture là code chèn ảnh. Còn từ đâu gọi gọi nó để chèn ảnh thì tùy nhu cầu thôi. Cốt lõi là có InsertPicture, rồi tùy nhu cầu mà gọi nó để chèn ảnh. Thế thôi. Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
be09 đã viết: Đây là File tôi làm như đã nêu ở bài 12 sử dụng UserForm với ListBox và chọn nhập liệu một loạt. View attachment 211789 Khi nhấn nút lấy giá và gán ảnh nó lấy hình trong Folder và gán vào. View attachment 211790View attachment 211792 Nhấp chuột vào đây để mở rộng...
Tiếc là người hỏi , đang muốn code gắn hình , và động hóa, không phải nhập Còn list box của bác hiện nhiều thông tin quá dễ rối: bác cứ để ý các hộp thoại của các phần mềm chính quy đâu có sử dụng listbox quá nhiều cột- khi nhiều cột thì người ta phải dùng cách khác để thể hiện cùng listbox (thường list box hiện 4 5 cột là nhiều) Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
tam888 đã viết: Tiếc là người hỏi , đang muốn code gắn hình , và động hóa, không phải nhập Còn list box của bác hiện nhiều thông tin quá dễ rối: bác cứ để ý các hộp thoại của các phần mềm chính quy đâu có sử dụng listbox quá nhiều cột- khi nhiều cột thì người ta phải dùng cách khác để thể hiện cùng listbox (thường list box hiện 4 5 cột là nhiều) Nhấp chuột vào đây để mở rộng...
Thì đây mới chỉ là hình chứ đã có tập tin Excel đâu. Nếu tung tập tin lên thì rồi sẽ có vài bài: "Anh ơi, nhưng em đã chọn các mã trong sheet data rồi, đã copy từ xyz rồi, thì sửa code như thế nào để nhập ảnh hả anh. Vì em không muốn chọn lại lần nữa trong ListBox", "Anh ơi, nhưng em không muốn lấy giá thì sửa code thế nào" v...v Upvote 0 Trungpro04

Trungpro04

Thành viên mới
Tham gia 19/1/19 Bài viết 9 Được thích 2
kieu manh đã viết: nếu ko dùng code mà chèn 10.000 ảnh có tới tết công gô sao .... + kéo hàm xuống nữa file nó to và nặng như cái xe lu thì có mà tèo téo teo chắc luôn -0-0-0-===\. Nhấp chuột vào đây để mở rộng...
Dùng hàm bạn chỉ mất vài phút đến vài chục phút thui Upvote 0 Z

zukura

Thành viên mới
Tham gia 18/10/13 Bài viết 8 Được thích 1
batman1 đã viết: Thì đây mới chỉ là hình chứ đã có tập tin Excel đâu. Nếu tung tập tin lên thì rồi sẽ có vài bài: "Anh ơi, nhưng em đã chọn các mã trong sheet data rồi, đã copy từ xyz rồi, thì sửa code như thế nào để nhập ảnh hả anh. Vì em không muốn chọn lại lần nữa trong ListBox", "Anh ơi, nhưng em không muốn lấy giá thì sửa code thế nào" v...v Nhấp chuột vào đây để mở rộng...
Haha bác batman1 comt vui quá. Code của bác như thổi hồn vào file của em. Em đọc kĩ lắm em không hiểu sao bác hiểu đúng nhu cầu em mà cho thêm mấy chữ " , , , True " vào. Nói chung chạy ngay từ lần đầu gặp nhau không phải hỏi thêm. Chúc bác sức khỏe nhé để giúp đỡ các ae diễn đàn. Upvote 0 be_09

be_09

Biên Hòa, Đồng Nai
Tham gia 9/4/11 Bài viết 9,972 Được thích 9,884 Nghề nghiệp Công chức
tam888 đã viết: Tiếc là người hỏi , đang muốn code gắn hình , và động hóa, không phải nhập Còn list box của bác hiện nhiều thông tin quá dễ rối: bác cứ để ý các hộp thoại của các phần mềm chính quy đâu có sử dụng listbox quá nhiều cột- khi nhiều cột thì người ta phải dùng cách khác để thể hiện cùng listbox (thường list box hiện 4 5 cột là nhiều) Nhấp chuột vào đây để mở rộng...
Bạn đọc bài 1 người ta nêu vầy "cột mã hàng" thì phải hiểu là còn những thứ khác là tên hàng hóa, kích thước, chủng loại, đơn vị tính, đơn giá ........và còn một loạt những thứ khác nữa chứ không phải chỉ riêng việc gán hình, do người ta nghĩ chưa đến nơi, đến chốn. Đương nhiên tôi đọc và hiểu nên đưa lên một số kết quả để chủ Topic hình dung được còn những vấn đề khác liên quan chứ không đơn giản là chỉ lấy hình. Upvote 0 T

tam888

Thành viên tích cực
Tham gia 22/8/13 Bài viết 838 Được thích 510
be09 đã viết: Bạn đọc bài 1 người ta nêu vầy "cột mã hàng" thì phải hiểu là còn những thứ khác là tên hàng hóa, kích thước, chủng loại, đơn vị tính, đơn giá ........và còn một loạt những thứ khác nữa chứ không phải chỉ riêng việc gán hình, do người ta nghĩ chưa đến nơi, đến chốn. Đương nhiên tôi đọc và hiểu nên đưa lên một số kết quả để chủ Topic hình dung được còn những vấn đề khác liên quan chứ không đơn giản là chỉ lấy hình. Nhấp chuột vào đây để mở rộng...
Bác cứ suy luận thế thì còn nhiều thứ khác nữa. Xét bao giờ hết. Nhưng thôi chủ topic đã thỏa mãn với các bài trên rồi. Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
tam888 đã viết: Bác cứ suy luận thế thì còn nhiều thứ khác nữa. Xét bao giờ hết. Nhưng thôi chủ topic đã thỏa mãn với các bài trên rồi. Nhấp chuột vào đây để mở rộng...
Tôi thì nghĩ công việc của người ta thì người ta phải biết người ta cần những thông tin gì, cần những cột nào. Chả cần ai phải gợi ý hình dung gì cả. Nếu người ta không biết thì chắc chắn người ta sẽ hỏi. Còn nếu không hỏi thì không nên cho là người ta không biết gì. Cái người ta hỏi thì chắc chắn người ta không biết. Nhưng cái người ta không hỏi thì không loại trừ khả năng là người ta còn giỏi hơn mình. Đừng vì người ta hỏi một vấn đề mà mặc định là người ta chả biết gì. Lần chỉnh sửa cuối: 29/1/19 Upvote 0 L

LeMinhhHa

Thành viên mới
Tham gia 13/2/19 Bài viết 5 Được thích 0 Kính gửi Giải Pháp Excel Tôi học trên YouTube và làm file Excel với đoạn Code theo hướng dẫn. Mục đích là khi thay đổi chọn Số CMND tại sheet Form sẽ hiện hình người tương ứng Tôi không biết VBA chỉ làm theo hướng dẫn nhưng không được, nhờ các anh em giúp với Xin chân thành cảm ơn Xin gửi kèm file

File đính kèm

  • GPEXCEL.rar GPEXCEL.rar 72.7 KB · Đọc: 41
Upvote 0 L

LeMinhhHa

Thành viên mới
Tham gia 13/2/19 Bài viết 5 Được thích 0
LeMinhhHa đã viết: Kính gửi Giải Pháp Excel Tôi học trên YouTube và làm file Excel với đoạn Code theo hướng dẫn. Mục đích là khi thay đổi chọn Số CMND tại sheet Form sẽ hiện hình người tương ứng Tôi không biết VBA chỉ làm theo hướng dẫn nhưng không được, nhờ các anh em giúp với Xin chân thành cảm ơn Xin gửi kèm file Nhấp chuột vào đây để mở rộng...
Có anh em nào giúp tôi được không, xin cám ơn Upvote 0 be_09

be_09

Biên Hòa, Đồng Nai
Tham gia 9/4/11 Bài viết 9,972 Được thích 9,884 Nghề nghiệp Công chức
LeMinhhHa đã viết: Có anh em nào giúp tôi được không, xin cám ơn Nhấp chuột vào đây để mở rộng...
Bạn nên đưa cái mẫu đầy đủ lên và cũng nên nêu rõ gán hình chỗ nào để các thành viên hiểu mới giúp được, chứ nữa vời như bạn thì người giúp rất nại sửa code khi bạn thay đổi ý. Lần chỉnh sửa cuối: 20/5/19 Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
LeMinhhHa đã viết: Có anh em nào giúp tôi được không, xin cám ơn Nhấp chuột vào đây để mở rộng...
Nếu nói về code của bạn thì có vài cái sai cơ bản 1. Không phải Mã: Sao chép. Set Rng = Sheets(1).Range(Sheets(1).[B5], Sheets(1).[B11].End(xlUp)) mà ít ra phải là Mã: Sao chép. Set Rng = Sheets(1).Range(Sheets(1).[B5], Sheets(1).[B65535].End(xlUp)) hoặc viết gọn With Me.Parent.Worksheets("List") Set Rng = .Range(.[B5], .[B65535].End(xlUp)) End With 2. Không phải Mã: Sao chép. Picname = ThisWorkbook.Path & "\Foto" & Rng.Find(Target).Offset(, 5) mà là Mã: Sao chép. Picname = ThisWorkbook.Path & "\Foto\" & Rng.Find(Target).Offset(, 5) 3. Không phải Mã: Sao chép. With ActiveSheet.Picture.Insert(Picname) mà là Mã: Sao chép. With ActiveSheet.Pictures.Insert(Picname) 4. Không phải Mã: Sao chép. Top = [F6].Top mà là Mã: Sao chép. .Top = [F6].Top 5. Tốt hơn nên - thay Mã: Sao chép. Sheets(2).Shapes([F6].Address).Delete bằng Mã: Sao chép. Me.Shapes(Me.[F6].Address).Delete - bỏ Mã: Sao chép. [F6].Seclect ... Activesheets.Shapes("$F$6").IncrementTop = 0 Activesheets.Shapes("$F$6").IncrementLeft = 0 - thay các [F6] bằng Me.[F6] ------ Nếu nói về các code khác thì trên GPE có nhiều. Upvote 0 L

LeMinhhHa

Thành viên mới
Tham gia 13/2/19 Bài viết 5 Được thích 0
batman1 đã viết: Nếu nói về code của bạn thì có vài cái sai cơ bản 1. Không phải Mã: Sao chép. Set Rng = Sheets(1).Range(Sheets(1).[B5], Sheets(1).[B11].End(xlUp)) mà ít ra phải là Mã: Sao chép. Set Rng = Sheets(1).Range(Sheets(1).[B5], Sheets(1).[B65535].End(xlUp)) hoặc viết gọn With Me.Parent.Worksheets("List") Set Rng = .Range(.[B5], .[B65535].End(xlUp)) End With 2. Không phải Mã: Sao chép. Picname = ThisWorkbook.Path & "\Foto" & Rng.Find(Target).Offset(, 5) mà là Mã: Sao chép. Picname = ThisWorkbook.Path & "\Foto\" & Rng.Find(Target).Offset(, 5) 3. Không phải Mã: Sao chép. With ActiveSheet.Picture.Insert(Picname) mà là Mã: Sao chép. With ActiveSheet.Pictures.Insert(Picname) 4. Không phải Mã: Sao chép. Top = [F6].Top mà là Mã: Sao chép. .Top = [F6].Top 5. Tốt hơn nên - thay Mã: Sao chép. Sheets(2).Shapes([F6].Address).Delete bằng Mã: Sao chép. Me.Shapes(Me.[F6].Address).Delete - bỏ Mã: Sao chép. [F6].Seclect ... Activesheets.Shapes("$F$6").IncrementTop = 0 Activesheets.Shapes("$F$6").IncrementLeft = 0 - thay các [F6] bằng Me.[F6] ------ Nếu nói về các code khác thì trên GPE có nhiều. Nhấp chuột vào đây để mở rộng...
Xin cám ơn các anh em đã giúp đỡ Upvote 0 Doanh7

Doanh7

Thành viên mới
Tham gia 13/7/16 Bài viết 32 Được thích 2 Nếu muốn chèn ảnh từ 1 ô tính trong file excel khác thì làm thế nào các bác(thay việc lấy ảnh từ file ảnh trong foder mà lấy từ 1 file excel khác ấy ah) Upvote 0 H

Hai shinta

Thành viên mới
Tham gia 23/6/15 Bài viết 3 Được thích 0
be_09 đã viết: Đây là File tôi làm như đã nêu ở bài 12 sử dụng UserForm với ListBox và chọn nhập liệu một loạt. View attachment 211789 Khi nhấn nút lấy giá và gán ảnh nó lấy hình trong Folder và gán vào. View attachment 211790View attachment 211792 Nhấp chuột vào đây để mở rộng...
Bạn ơi cho mình xin file này để mình học hỏi được không ạ? Upvote 0 M

Minh Giáp

Thành viên mới
Tham gia 25/5/22 Bài viết 2 Được thích 0
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã: Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub [/ [/QUOTE] Nhấp chuột vào đây để mở rộng...
batman1 đã viết: Nếu cột Mã dùng công thức thì khi công thức phải tính lại do tham chiếu thay đổi thì sự kiện Change không sảy ra nên code sẽ không được thực hiện. Và kết quả là ảnh không được đổi. Code dưới đây cho phép dán hàng loạt Mã. ------------- Trước hết về sub tổng quát InsertPicture. Bạn có thể lưu Module cùng với InsertPicture vào "thư viện" - một thư mực nào đó, để khi cần thì chỉ (trong VBE): File -> Import File -> duyệt tới tập tin BAS đã lưu -> chọn tập tin BAS để thêm vào tập tin Excel hiện hành -> dùng Sub InsertPicture trong tập tin hiện hành. Bạn không nên dùng Pictures vì đôi khi gặp những lỗi khó hiểu. InsertPicture có nhiều tùy chọn: có thể nhập ảnh vào 1 ô hoặc vùng nhiều ô mà không cần merge cells, nhập ảnh với kích thước thực, nhập ảnh center trong ô/vùng hoặc vừa khít, nhập ảnh nhưng khi mang sang máy khác thì phải mang ảnh theo hoặc nhập ảnh vĩnh viễn vào sheet để khi mang sang máy khác thì không phải mang ảnh đi theo. Tôi nhìn tập tin của bạn thì thấy bạn muốn nhập ảnh vừa khít với vùng (ảnh sẽ bị biến dạng nếu tỉ lệ cao/rộng của vùng <> cao/rộng của ảnh). Code Mã: Sao chép. Private Sub Worksheet_Change(ByVal Target As range) Dim rng As range If Intersect(Target, Union([A2:A10000], [D2:D10000])) Is Nothing Then Exit Sub For Each rng In Target InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1) Next rng End Sub Code trên cho phép bạn dán tên ảnh (copy từ đâu đó) hàng loạt vào cột A hoặc D kể từ dòng 2 trở đi. Với code trên thì sau khi chèn ảnh có thể xóa ảnh trên đĩa và khi gửi cho đối tác không phải gửi ảnh theo. Nếu bạn không xóa ảnh trên đĩa và luôn gửi ảnh kèm tập tin cho đối tác thì nên chèn link thôi để tập tin nhẹ. Trong trường hợp này sửa thành Mã: Sao chép. InsertPicture ThisWorkbook.path & "\" & rng.Value & ".jpg", rng.Offset(0, 1), , , True Nếu ảnh không là JPG thì sửa ".jpg" thích hợp. Nếu ảnh ở thư mục con vd. Anh thì sửa ThisWorkbook.path & "\" thành ThisWorkbook.path & "\Anh\" Code phục vụ 2 cột là A và D. Nếu có thêm cột thì thêm vào trong ngoặc của Union([A2:A10000], [D2:D10000]) Cuối cùng là sub tổng quát InsertPicture: Mở tập tin -> Alt + F11 -> menu Insert -> Module -> dán code dưới vào Module vừa thêm. Để có thể dùng sub tổng quát InsertPicture trong những tập tin tương lai thì: chọn Module (click tên Module) -> menu File -> Export File -> duyệt tới thư mục cần lưu -> lưu lại với tên nào đó.BAS Code cho Module vừa thêm Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Em chào các bác, các bác cho em hỏi nếu muốn vùng chọn hiện ảnh là nhiều cell thì mã code viết như nào ạ. Ví dụ em muốn gộp ô nhập mã là từ N17:N25 và ô chèn ảnh là O17:O25, tương tự gộp như vậy cho các cell dưới cột N và chèn ảnh cột O. Em chưa thạo mong các bác giúp đỡ ạ!!!

File đính kèm

  • anh excel.jpg anh excel.jpg 78.1 KB · Đọc: 12
Upvote 0 B

batman1

Thành viên gạo cội
Tham gia 8/9/14 Bài viết 5,776 Được thích 9,819
Minh Giáp đã viết: Em chào các bác, các bác cho em hỏi nếu muốn vùng chọn hiện ảnh là nhiều cell thì mã code viết như nào ạ. Ví dụ em muốn gộp ô nhập mã là từ N17:N25 và ô chèn ảnh là O17:O25, tương tự gộp như vậy cho các cell dưới cột N và chèn ảnh cột O. Em chưa thạo mong các bác giúp đỡ ạ!!! Nhấp chuột vào đây để mở rộng...
Bạn không đọc kỹ rồi. Tôi là người viết rất có tâm
Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Nhấp chuột vào đây để mở rộng...
Rõ ràng có: Target: vung nhap anh. Co the la nhieu cell. Và không có một chỗ nào tôi viết là Target phải MERGE CELLS, bạn tự hiểu. Không phải tức có thể, cho phép, nhưng không bắt buộc. Nếu MÃ ở N17 cũng là tên ảnh thì Range("N17").Value, tức tên ảnh, phải nối với đường dẫn tới thư mục ảnh và định dạng của ảnh (PNG, JPG, BMP, ...) để có đường dẫn đầy đủ nhập vào PicFilename. Đọc bài có ThisWorkbook.path & "\" & rng.Value & ".jpg" mà không biết bắt chước thì bó tay. Nếu vùng chèn ảnh là O17:O25 thì nhập Range("O17:O25") với tư cách là TARGET. Thế thôi. Mà nếu không biết tường tận thì cũng phải bỏ công ra viết, dù có sai, đính kèm tập tin. Lúc đó người khác sẽ sửa. Còn ngồi rung đùi muốn người khác làm từ A đến Z thì hơi ... Thôi thì cho là hơi không phải. Lần chỉnh sửa cuối: 28/5/22 Upvote 0 M

Minh Giáp

Thành viên mới
Tham gia 25/5/22 Bài viết 2 Được thích 0
batman1 đã viết: Bạn không đọc kỹ rồi. Tôi là người viết rất có tâm Rõ ràng có: Target: vung nhap anh. Co the la nhieu cell. Và không có một chỗ nào tôi viết là Target phải MERGE CELLS, bạn tự hiểu. Không phải tức có thể, cho phép, nhưng không bắt buộc. Nếu MÃ ở N17 cũng là tên ảnh thì Range("N17").Value, tức tên ảnh, phải nối với đường dẫn tới thư mục ảnh và định dạng của ảnh (PNG, JPG, BMP, ...) để có đường dẫn đầy đủ nhập vào PicFilename. Đọc bài có ThisWorkbook.path & "\" & rng.Value & ".jpg" mà không biết bắt chước thì bó tay. Nếu vùng chèn ảnh là O17:O25 thì nhập Range("O17:O25") với tư cách là TARGET. Thế thôi. Mà nếu không biết tường tận thì cũng phải bỏ công ra viết, dù có sai, đính kèm tập tin. Lúc đó người khác sẽ sửa. Còn ngồi rung đùi muốn người khác làm từ A đến Z thì hơi ... Thôi thì cho là hơi không phải. Nhấp chuột vào đây để mở rộng...
Dạ em cảm ơn bác đã chỉ rất tận tình ạ, vì rằng em mới biết đến code nên chưa hiểu để viết mà đang cần dùng mong bác thông cảm. Chúc bác thật nhiều sức khỏe ạ Upvote 0 T

trinhduyvu

Thành viên mới
Tham gia 11/10/22 Bài viết 12 Được thích 2
batman1 đã viết: Mã: Sao chép. Sub InsertPicture(ByVal PicFilename As String, Optional Target As range = Nothing, _ Optional original As Boolean = False, Optional center As Boolean = False, _ Optional LinkToFile As Boolean = False) ' Target: vung nhap anh. Co the la nhieu cell ' Neu Target = Nothing thi Target = ActiveCell ' Neu original = True thi nhap anh kich thuoc thuc. ' Neu original = FALSE thi neu center = True thi anh se center trong vung Target, ' nguoc lai thi se vua khit vung Target ' LinkToFile = False thi khong can giu anh tren dia, nguoc lai bat buoc phai giu anh de moi lan mo thi co Dim w As Double, h As Double, shp As Shape, fso As Object If Target Is Nothing Then Set Target = ActiveCell On Error Resume Next Target.Parent.Shapes(Target.Address).Delete On Error GoTo 0 Set fso = CreateObject("Scripting.FileSystemObject") If fso.FileExists(PicFilename) Then If LinkToFile Then Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoTrue, msoFalse, Target.left, Target.top, 0, 0) Else Set shp = Target.Parent.Shapes.AddPicture(PicFilename, msoFalse, msoTrue, Target.left, Target.top, 0, 0) End If If Not shp Is Nothing Then With shp If original Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue ElseIf center Then .ScaleWidth 1, msoTrue .ScaleHeight 1, msoTrue w = Target.Width h = w * .Height / .Width If h > Target.Height Then h = Target.Height w = h * .Width / .Height End If .left = Target.left + (Target.Width - w) / 2 .top = Target.top + (Target.Height - h) / 2 .Width = w .Height = h Else .Width = Target.Width .Height = Target.Height End If shp.Name = Target.Address shp.Placement = xlMoveAndSize End With End If End If Set fso = Nothing End Sub Nhấp chuột vào đây để mở rộng...
Đoạn code này của bác batman1 hay quá, tôi áp dụng vào file của mình được. Nhưng tôi không đủ giỏi để hiểu hết đoạn code này, không biết có thể sửa như thế nào để ảnh mình chèn hiển thị dưới dạng icon, nhấn vào thì ảnh mới mở lên, chứ không hiển thị trực tiếp như hiện tại được không. Upvote 0 Bạn phải đăng nhập hoặc đăng ký để trả lời bài viết tại đây.

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

PhanTuHuong Nếu diễn đàn GPE đóng cửa? (1 người xem)
    • Thích
    • Yêu thích
  • PhanTuHuong
  • Chủ nhật lúc 23:46
  • Thư giãn
Trả lời 13 Đọc 353 Hôm nay lúc 17:19 Cao Mạnh Sơn Cao Mạnh Sơn P Lỗi hàm VBA phải add-in sau mỗi lần mở file (2 người xem)
  • phamdinh.huy.aladin@gmail
  • Hôm qua, lúc 10:18
  • Hàm và công thức Excel
Trả lời 5 Đọc 114 Hôm nay lúc 13:59 phamdinh.huy.aladin@gmail P K Các nút Buttom, Combobox, Textbox bị thay đổi kích thước ... (1 người xem)
  • kaoehtkid
  • Hôm qua, lúc 19:04
  • Những vấn đề chung
Trả lời 4 Đọc 81 Hôm nay lúc 13:49 ptm0412 ptm0412 HeSanbi
  • Đã giải quyết
WeatherXL - Ứng dụng lấy dữ liệu Thời tiết siêu nhanh (***Đang phát triển lại)
    • Thích
    • Yêu thích
  • HeSanbi
  • 30/5/20
  • Lập Trình với Excel
Trả lời 91 Đọc 27K Hôm nay lúc 12:33 HeSanbi HeSanbi D
  • Question Question
Tách dòng tự động theo điều kiện bằng VBA
    • Cười
  • duongnhuxuyen
  • Thứ sáu lúc 15:39
  • Lập Trình với Excel
Trả lời 14 Đọc 271 Hôm nay lúc 09:00 ptm0412 ptm0412 ongke0711
  • Question Question
Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba
    • Thích
    • Yêu thích
    • Cảm ơn
  • ongke0711
  • 6/10/24
  • Lập Trình với Excel
4 5 6 Trả lời 580 Đọc 82K Hôm nay lúc 08:39 pycckuu410 pycckuu410 E
  • Đã giải quyết
VBA code thay thế cho pivot-table lấy top 10, bottom 10 (1 người xem)
    • Thích
  • eagle12
  • 8/12/25
  • Lập Trình với Excel
Trả lời 24 Đọc 498 Hôm qua, lúc 16:19 eagle12 E HeSanbi Thuật ngữ "Đối chiếu Unicode" quan trọng trong việc xử lý chuỗi ký tự (2 người xem)
  • HeSanbi
  • Thứ bảy lúc 15:41
  • Xử lý chuỗi ký tự
Trả lời 1 Đọc 137 Hôm qua, lúc 10:34 jonythanht J D Xin giúp.......Kết hợp countifs và Sumproduct để đếm dữ liệu và tính số lượng tổng không trùng lặp với nhiều điều kiện (1 người xem)
  • dieppk.nb92
  • Chủ nhật lúc 01:22
  • Hàm và công thức Excel
Trả lời 10 Đọc 299 Hôm qua, lúc 08:43 dieppk.nb92 D H tìm kiếm nội dung liên kết giữa cac bảng , cac sheet trong excel
  • H_P
  • Thứ bảy lúc 14:23
  • Tìm kiếm, dò tìm và tham chiếu
Trả lời 2 Đọc 105 Hôm qua, lúc 05:30 DeTong D N Công thức trích xuất riêng các ký tự trong chuỗi họ tên
  • Ngựa con 2002
  • Thứ bảy lúc 23:07
  • Xử lý chuỗi ký tự
Trả lời 7 Đọc 132 Chủ nhật lúc 18:57 Ngựa con 2002 N Q Nhờ các chị cho em xin công thức đếm bản ghi loại bỏ dữ liệu trùng lặp với nhiều điều kiện
  • QUANSUNG
  • Thứ bảy lúc 10:55
  • Hàm và công thức Excel
Trả lời 2 Đọc 129 Chủ nhật lúc 00:02 dungpham01 D huuthang_bd Cùng xây dựng file Gia Phả
    • Thích
  • huuthang_bd
  • 30/12/13
  • Xây dựng ứng dụng.
Trả lời 36 Đọc 21K Thứ bảy lúc 16:15 le_vis L D Công thức tính thuế thu nhập cá nhân mới nhất theo mức 5 bậc
  • Dinh Hong Nhung
  • Thứ năm lúc 10:36
  • Hàm và công thức Excel
Trả lời 14 Đọc 738 Thứ bảy lúc 10:43 Cúc Hr C PhanTuHuong CHỌN VÀ SỬ DỤNG MÁY LỌC KHÔNG KHÍ
    • Cảm ơn
    • Thích
  • PhanTuHuong
  • 4/10/22
  • Thư giãn
Trả lời 8 Đọc 2K Thứ bảy lúc 00:09 PhanTuHuong PhanTuHuong D
  • Question Question
IN TỰ ĐỘNG TỪ DỮ LIỆU CÓ SẴN
  • duongnhuxuyen
  • 12/11/25
  • Lập Trình với Excel
Trả lời 14 Đọc 472 Thứ sáu lúc 19:42 duongnhuxuyen D V Biểu diễn số đếm theo hình vẽ từ Shape
  • Vũ Hải Sơn
  • 2/12/25
  • Hàm và công thức Excel
Trả lời 34 Đọc 729 Thứ sáu lúc 15:31 Vũ Hải Sơn V T Xử lý lỗi xuất hiện màu cam khi chọn 1 ô trong excel.
  • Thúy Sa
  • Thứ năm lúc 17:17
  • Những vấn đề chung
Trả lời 1 Đọc 111 Thứ năm lúc 20:29 Maika8008 Maika8008 L
  • Question Question
Tạo ComboBox để tìm kiếm tên
  • lyvanthang
  • Thứ năm lúc 10:36
  • Lập Trình với Excel
Trả lời 4 Đọc 209 Thứ năm lúc 20:26 HUONGHCKT H T Điên đầu vì Countif
  • TVT230279
  • 5/12/25
  • Hàm và công thức Excel
Trả lời 5 Đọc 285 Thứ năm lúc 11:30 87kilua 87kilua Xem thêm… Chia sẻ: Facebook X Bluesky LinkedIn Reddit Pinterest Tumblr WhatsApp Email Chia sẻ Link

Thành viên có số lượng bài viết cao nhất tháng

  • Maika8008 32
  • thanthanhan 19
  • dungpham01 18
  • eagle12 16
  • ongke0711 16
  • nguyenanhtruong2409 14
  • Phan Thế Hiệp 12
  • HUONGHCKT 12
  • vic_it 11
  • ptm0412 11
  • nhhnam 10
  • pycckuu410 10
  • Vũ Hải Sơn 9
  • HeSanbi 8
  • bsbnhh 7
  • Gà Con yêu VBA 7
  • Hana2610 6
  • dieppk.nb92 6
  • duongnhuxuyen 6
  • Mr.hieudoanxd 5

Thành viên có điểm tương tác cao nhất tháng

  • Phan Thế Hiệp 63
  • Maika8008 26
  • ongke0711 17
  • thanthanhan 16
  • ptm0412 12
  • HeSanbi 10
  • HUONGHCKT 9
  • dungpham01 9
  • Cúc Hr 8
  • eagle12 8
  • dieppk.nb92 6
  • befaint 5
  • Mr.hieudoanxd 5
  • pycckuu410 5
  • SA_DQ 4
  • nguyenanhtruong2409 4
  • Phuocam 4
  • tieutuvodanh192 2
  • Hana2610 2
  • nhhnam 2

Thời gian đếm ngược.

000 Ngày 00 Giờ 00 phút 00 giây Thân mời tham dự sự kiện sinh nhật GPE 2025
  • Trang chủ
  • Diễn đàn
  • Lập Trình với Excel
  • Website này sử dụng cookies. Tiếp tục sử dụng trang này, đồng nghĩa với việc bạn chấp nhận website sử dụng cookies. Chấp nhận Tìm hiểu thêm.…
Back Top Bottom

Từ khóa » Code Chèn ảnh Vào Excel Bằng Vba