Giúp chèn ảnh tự động vào exel 2007

Liên hệ QC
mình làm cho bạn theo 2 cách.
bạn coi file đính kèm và nghiên cứu để hiều nó là như thế nào rùi hãy comment lại nha!

Em làm được rồi, giờ chỉ vướng mắc ở chỗ kích thước ảnh khác nhau mà khi chèn file nó tự nối đuôi nhau dẫn đến ảnh tịnh tiến dần nhảy sang cell kế tiếp... Có cách nào khắc phục sao cho ảnh cell nào sẽ khít chỉ trong cell đó không anh?
 
Đoạn LockAspectRatio = msoFalse ấy ghi ở trong module hả anh?

Mở file của tôi ở bài 11 sẽ thấy liền
Ngoài ra góp ý thêm:
- Nếu tôi xóa dữ liệu ở cột C thì lý ra hình ở cột E phải biến mất, trong khi code của bạn "quên" làm điều này
- Nếu tôi đổi mã ở cột C thì hìnhở cột E đổi theo (đương nhiên) nhưng hình cũ phải được xóa đi. Code của bạn cũng "quên" làm điều này, dẫn đến khi đổi dữ liệu tại cột C nhiều lần thì sẽ có vô số hình chồng lên nhau trong 1 cell
-----------------
Em làm được rồi, giờ chỉ vướng mắc ở chỗ kích thước ảnh khác nhau mà khi chèn file nó tự nối đuôi nhau dẫn đến ảnh tịnh tiến dần nhảy sang cell kế tiếp... Có cách nào khắc phục sao cho ảnh cell nào sẽ khít chỉ trong cell đó không anh?
Thế sao bạn dùng file ở bài 11?
 
Mở file của tôi ở bài 11 sẽ thấy liền
Ngoài ra góp ý thêm:
- Nếu tôi xóa dữ liệu ở cột C thì lý ra hình ở cột E phải biến mất, trong khi code của bạn "quên" làm điều này
- Nếu tôi đổi mã ở cột C thì hìnhở cột E đổi theo (đương nhiên) nhưng hình cũ phải được xóa đi. Code của bạn cũng "quên" làm điều này, dẫn đến khi đổi dữ liệu tại cột C nhiều lần thì sẽ có vô số hình chồng lên nhau trong 1 cell
-----------------

Thế sao bạn dùng file ở bài 11?

Vậy phải dùng ở bài nào hả anh? ANh up dùm em được không anh?
 
Mở file của tôi ở bài 11 sẽ thấy liền
Ngoài ra góp ý thêm:
- Nếu tôi xóa dữ liệu ở cột C thì lý ra hình ở cột E phải biến mất, trong khi code của bạn "quên" làm điều này
- Nếu tôi đổi mã ở cột C thì hìnhở cột E đổi theo (đương nhiên) nhưng hình cũ phải được xóa đi. Code của bạn cũng "quên" làm điều này, dẫn đến khi đổi dữ liệu tại cột C nhiều lần thì sẽ có vô số hình chồng lên nhau trong 1 cell?

Dạ, em đã thấy sai sót như thầy hướng dẫn... quả thiệt là mình không lường hết các tình huống.
Cám ơn thầy NDU nhiều lắm.
 
Thay code này vào bài số 5 thì cũng có thể tự động làm cho hình vừa khít vào cell, nhưng cũng còn hạn chế là nếu xóa đi mã số của hình nhưng hình không bị xóa đi.
PHP:
Sub CHEN_HINH()
On Error Resume Next
Dim r As Long
Dim Pic As String
Application.ScreenUpdating = False
   For r = 8 To [A65536].End(3).Row
      Pic = Cells(r, 1).Value & ".jpg"
      ActiveSheet.Shapes(Pic).Delete
      With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Pic)
         .Name = Pic
          ActiveSheet.Shapes(Pic).LockAspectRatio = msoFalse
         .Left = Cells(r, 2).Left
         .Top = Cells(r, 2).Top
         .Width = Cells(r, 2).Width
         .Height = Cells(r, 2).Height
      End With
   Next
Application.ScreenUpdating = True
End Sub
 
Thay code này vào bài số 5 thì cũng có thể tự động làm cho hình vừa khít vào cell, nhưng cũng còn hạn chế là nếu xóa đi mã số của hình nhưng hình không bị xóa đi.
PHP:
Sub CHEN_HINH()
On Error Resume Next
Dim r As Long
Dim Pic As String
Application.ScreenUpdating = False
   For r = 8 To [A65536].End(3).Row
      Pic = Cells(r, 1).Value & ".jpg"
      ActiveSheet.Shapes(Pic).Delete
      With ActiveSheet.Pictures.Insert(ThisWorkbook.Path & "\" & Pic)
         .Name = Pic
          ActiveSheet.Shapes(Pic).LockAspectRatio = msoFalse
         .Left = Cells(r, 2).Left
         .Top = Cells(r, 2).Top
         .Width = Cells(r, 2).Width
         .Height = Cells(r, 2).Height
      End With
   Next
Application.ScreenUpdating = True
End Sub
Thế này anh ạ, kích thước khung ảnh của em không giống nhau, chiều rộng thì như nhau 160 nhưng chiều dài thì dao động trong khoảng 110 đến 125 dẫn đến chiều rộng thì khít đẹp nhưng chiều dài vì nó nối đuôi nhau nên chèn vào cell của nhau, khó là ở đấy anh ạ :(
 
Thế này anh ạ, kích thước khung ảnh của em không giống nhau, chiều rộng thì như nhau 160 nhưng chiều dài thì dao động trong khoảng 110 đến 125 dẫn đến chiều rộng thì khít đẹp nhưng chiều dài vì nó nối đuôi nhau nên chèn vào cell của nhau, khó là ở đấy anh ạ :(

Code của tôi đã được test kỹ trên 3 version: Excel 2003, Excel 2007 và Excel 2010, hoàn toàn OK ---> Hình luôn vừa khít với cell
Cứ tải về mà xài, khỏi thắc mắc gì nữa nhé
 
Thế này anh ạ, kích thước khung ảnh của em không giống nhau, chiều rộng thì như nhau 160 nhưng chiều dài thì dao động trong khoảng 110 đến 125 dẫn đến chiều rộng thì khít đẹp nhưng chiều dài vì nó nối đuôi nhau nên chèn vào cell của nhau, khó là ở đấy anh ạ :(
Chán bạn quá. Copy file này bỏ vào thư mục của bạn rồi bấm nút cái coi sao. Lam theo đúng form của file bạn đấy.
 

File đính kèm

  • Thong tin nhan su.xls
    36.5 KB · Đọc: 51
Code của tôi đã được test kỹ trên 3 version: Excel 2003, Excel 2007 và Excel 2010, hoàn toàn OK ---> Hình luôn vừa khít với cell
Cứ tải về mà xài, khỏi thắc mắc gì nữa nhé
Tuyệt vời ông mặt trời :d, chỉ có một khuyết nhỏ là một vài ảnh không hiểu sao không thấy chèn vào anh ạ :)
 
Vâng, để em kiểm tra lại, cho em hỏi thêm là em có file để làm ảnh thẻ nhân viên, làm thế nào để nhập ID trên cột ID (R) thì ảnh tự động vào khít các cell như trong hình. Cảm ơn anh rất nhiều, làm phiền anh thật đấy :). Em gửi file anh xem giúp và giữ nguyên khung hình, số lượng khung hình cho em nhé.
 

File đính kèm

  • ID-LamThe.xlsx
    76.9 KB · Đọc: 20
Lần chỉnh sửa cuối:
Vâng, để em kiểm tra lại, cho em hỏi thêm là em có file để làm ảnh thẻ nhân viên, làm thế nào để nhập ID trên cột ID (R) thì ảnh tự động vào khít các cell như trong hình. Cảm ơn anh rất nhiều, làm phiền anh thật đấy :). Em gửi file anh xem giúp và giữ nguyên khung hình, số lượng khung hình cho em nhé.

Bạn chỉ đưa file Excel lên, còn hình ở đâu?
Đã vậy, file còn bị lỗi công thức tùm lum, tôi giúp thế nào đây?
 
Bạn chỉ đưa file Excel lên, còn hình ở đâu?
Đã vậy, file còn bị lỗi công thức tùm lum, tôi giúp thế nào đây?

file của em tổng hợp của 3 sheet, nặng hơn 10mb nên không up lên diễn đàn được
. Em up lên box anh xem giúp em nhé, , hình thì anh lấy hình nào cũng được, sao cho cứ tương ứng ID nào thì tên hình ID đó vào cell tương ứng.
https://app.box.com/s/hfyc3kfsop2mt97m47zp
 
file của em tổng hợp của 3 sheet, nặng hơn 10mb nên không up lên diễn đàn được
. Em up lên box anh xem giúp em nhé, , hình thì anh lấy hình nào cũng được, sao cho cứ tương ứng ID nào thì tên hình ID đó vào cell tương ứng.
https://app.box.com/s/hfyc3kfsop2mt97m47zp

Ủa gì kỳ vậy? Mới hôm trước đã viết sẵn cho bạn cái hàm rồi, cứ vậy mà áp dụng vào thôi
Giả sử trong file đã có 1 module chứa hàm CommPic, vậy thì tại cell C7, ta gõ công thức =CommPic(D17&".jpg") rồi copy cell C7, paste vào tất cả các cell còn lại thôi
Điều đương nhiên là:
- Muốn macro chạy, phải Save As file thành XLSM hoặc XLSB hoặc XLS (định dạng XLSX sẽ xóa sạch tất cả các macro)
- Với công thức như trên thì các file hình phải nằm cùng thư mục với file Excel
---------------------------------------
Nói thêm: File của bạn nặng là vì bên Sheet ID chứa cả đống rác (toàn hình vẽ lung tung). Tôi dọn hết chúng, file chỉ còn vài chục KB
 

File đính kèm

  • CommPic.rar
    71.2 KB · Đọc: 60
Ủa gì kỳ vậy? Mới hôm trước đã viết sẵn cho bạn cái hàm rồi, cứ vậy mà áp dụng vào thôi
Giả sử trong file đã có 1 module chứa hàm CommPic, vậy thì tại cell C7, ta gõ công thức =CommPic(D17&".jpg") rồi copy cell C7, paste vào tất cả các cell còn lại thôi
Điều đương nhiên là:
- Muốn macro chạy, phải Save As file thành XLSM hoặc XLSB hoặc XLS (định dạng XLSX sẽ xóa sạch tất cả các macro)
- Với công thức như trên thì các file hình phải nằm cùng thư mục với file Excel
---------------------------------------
Nói thêm: File của bạn nặng là vì bên Sheet ID chứa cả đống rác (toàn hình vẽ lung tung). Tôi dọn hết chúng, file chỉ còn vài chục KB

Em làm được rồi anh ạ, nhưng có sự cố khá lớn là khi mình in thì phần ảnh sẽ không có. Anh test lại giúp em xem.
 
Được rồi anh ơi nhưng làm nào để mất cái dấu đánh ở góc ảnh bên phải phía trên hả anh?
 
Web KT
Back
Top Bottom