Giúp chèn ảnh tự động vào exel 2007 (1 người xem)

Liên hệ QC

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

tueyennhi

Thành viên tích cực
Tham gia
18/10/10
Bài viết
1,192
Được thích
105
Giúp nâng cao trong chèn ảnh tự động vào exel 2007

Em gửi data lên mong anh chị làm mẫu giúp cho em, vì em không biết gì về excel cả, làm theo anh chị hướng dẫn mà không được. Em đầu đất quá :(. Em muốn ảnh tự động chèn vào cell chứ làm thủ công thì bao giờ cho xong hơn 2000 người :((. Cho em hỏi luôn có cách nào fix được kích thước ảnh vào chuẩn theo cell luôn không ạ? Mong anh chị chỉ giúp em. Cảm ơn mọi người nhiều lắm !
 

File đính kèm

Lần chỉnh sửa cuối:
Em gửi data lên mong anh chị làm mẫu giúp cho em, vì em không biết gì về excel cả, làm theo anh chị hướng dẫn mà không được. Em đầu đất quá :(. Em muốn ảnh tự động chèn vào cell chứ làm thủ công thì bao giờ cho xong hơn 2000 người :((. Cho em hỏi luôn có cách nào fix được kích thước ảnh vào chuẩn theo cell luôn không ạ? Mong anh chị chỉ giúp em. Cảm ơn mọi người nhiều lắm !
Đừng nói là KHÔNG BIẾT EXCEL, ngay cả làm việc lâu với Excel rồi nhưng chưa biết lập trình VBA cũng không làm được
Tuy nhiên, bạn có thể tham khảo topic này:
http://www.giaiphapexcel.com/forum/showthread.php?51408-Chèn-hình-vào-cell-bằng-hàm-tự-tạo
May mắn (nếu bạn chịu vọc) thì làm được, còn không thì.. thôi
 
Muốn tay không bắt giặc đây bác ndu --=0
 
Không được :(((..................
 
Em gửi data lên mong anh chị làm mẫu giúp cho em, vì em không biết gì về excel cả, làm theo anh chị hướng dẫn mà không được. Em đầu đất quá :(. Em muốn ảnh tự động chèn vào cell chứ làm thủ công thì bao giờ cho xong hơn 2000 người :((. Cho em hỏi luôn có cách nào fix được kích thước ảnh vào chuẩn theo cell luôn không ạ? Mong anh chị chỉ giúp em. Cảm ơn mọi người nhiều lắm !
Bạn nghiên cứu cái này xem sao. Tải file về, giải nén ra trước mới chạy code.
 

File đính kèm

Đừng nói là KHÔNG BIẾT EXCEL, ngay cả làm việc lâu với Excel rồi nhưng chưa biết lập trình VBA cũng không làm được
Tuy nhiên, bạn có thể tham khảo topic này:
http://www.giaiphapexcel.com/forum/showthread.php?51408-Chèn-hình-vào-cell-bằng-hàm-tự-tạo
May mắn (nếu bạn chịu vọc) thì làm được, còn không thì.. thôi
Em làm theo cách của em nhưng Tại cell C5, gõ công thúc =CommPic(B5,C5) và kéo fill xuống bảng tính báo #NAME?.
(Em đang dùng office 2007 đã chuyển lưu file sang xls nhưng không được)
 
Bạn nghiên cứu cái này xem sao. Tải file về, giải nén ra trước mới chạy code.
Đã làm theo cách của anh nhưng lỗi vẫn như trên. Em làm theo module trong file anh và làm:
- Gõ công thức này vào cell B3:
PHP Code:
=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
Và kết quả ở C5 là #NAME?. Mong anh chỉ giúp.
 
Đã làm theo cách của anh nhưng lỗi vẫn như trên. Em làm theo module trong file anh và làm:
- Gõ công thức này vào cell B3:
PHP Code:
=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
Và kết quả ở C5 là #NAME?. Mong anh chỉ giúp.

À mà cho em hỏi chạy code là sao? Em tưởng cứ chỉ cần làm như hướng dẫn là được, (lập module ghi code sau đó viết hàm) sẽ ra ảnh???
 
Đã làm theo file chenhinh của anh và ảnh đã hiện, module thì em biết chỗ insert nhưng còn cái Chèn hình là ở đâu hả anh? CHo em hỏi luôn làm nào để ảnh tự fix chuẩn theo kích thước cell hả anh?
 
Lần chỉnh sửa cuối:
Em làm theo cách của em nhưng Tại cell C5, gõ công thúc =CommPic(B5,C5) và kéo fill xuống bảng tính báo #NAME?.
(Em đang dùng office 2007 đã chuyển lưu file sang xls nhưng không được)

Chán bạn quá! Làm sẵn công thức cho bạn tại cell E5 rồi đấy, chỉ việc kéo fill xuống là được
Lưu ý:
- Phải giải nén file đính kèm của tôi ra rồi mở file Excel thì code mới chạy được (chạy trực tiếp từ file RAR sẽ không thấy hình)
- Muốn xóa hình thì xóa dữ liệu cột C (đừng xóa hàm ở cột E)
- Khi thay đổi chiều rộng cột, độ cao dòng, nếu hình bị lệch, hãy bấm F9 để chỉnh lại size hình vừa vặn với cell
 

File đính kèm


À mà cho em hỏi chạy code là sao? Em tưởng cứ chỉ cần làm như hướng dẫn là được, (lập module ghi code sau đó viết hàm) sẽ ra ảnh???
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!
 

File đính kèm

Chán bạn quá! Làm sẵn công thức cho bạn tại cell E5 rồi đấy, chỉ việc kéo fill xuống là được
Lưu ý:
- Phải giải nén file đính kèm của tôi ra rồi mở file Excel thì code mới chạy được (chạy trực tiếp từ file RAR sẽ không thấy hình)
- Muốn xóa hình thì xóa dữ liệu cột C (đừng xóa hàm ở cột E)
- Khi thay đổi chiều rộng cột, độ cao dòng, nếu hình bị lệch, hãy bấm F9 để chỉnh lại size hình vừa vặn với cell
ôi... học được bài này của thầy NDU hay quá!
Cám ơn thầy nhiều lắm.
 
Em đã làm được chỉ còn không tự fix ảnh theo kích thước cell. Vì ảnh của em kích thước không đều mà ảnh nó cứ nối tiếp nhau làm cho ảnh bị tịnh tiến từ cell này chồi dần lên cell kia. Anh chị có giải pháp giúp em giúp cho chót với }}}}}
 
bạn biết được gì về Excel??? mà bạn lạ la làng lên chỉ 2 chữ "Không được" ???????
Hi hi em chi biết đánh văn bản chứ còn hàm đơn giản cũng chưa biết qua, tạm thời mò được cái chèn ảnh rồi nhưng ảnh nó không tự fix chuẩn vào từng ô mà cứ nối đuôi nhau tịnh tiến dần làm ảnh nọ chèn dần lên cả cell kia
 
ôi... học được bài này của thầy NDU hay quá!
Cám ơn thầy nhiều lắm.

Thì cũng gần giống cách của bạn thôi
Code của bạn cũng tạm ổn, nhưng có mấy vấn đề:
1> Set curWks = Worksheets("ThongTin_NhanSu") ---> Sao bạn biết chắc rằng tên sheet sẽ là "ThongTin_NhanSu"? ---> Không tổng quát
2> Về vấn đề đường dẫn đến file hình, bạn có đoạn:
Mã:
myPicPath = ThisWorkbook.Path
If (Right(myPicPath, 1) <> "\") Then myPicPath = myPicPath & "\"
myPictName = myPicPath & MSNV & ".JPG"
Sao bạn biết chắc rằng mấy tấm hình người ta để chung folder với file Excel? ---> Không tổng quát
3> Bạn dùng hàm Dir: Dir(CStr(myPictName)): Sẽ không hoạt động với đường dẫn là tiếng Việt có dấu. Nên dùng Scripting.FileSystemObject
4> Code trên, nếu chạy trên version từ 2007 trở lên thì hình sẽ bị lệch. Phải có đoạn LockAspectRatio = msoFalse để điều chỉnh vụ này
vân vân....
 
Thì cũng gần giống cách của bạn thôi
Code của bạn cũng tạm ổn, nhưng có mấy vấn đề:
1> Set curWks = Worksheets("ThongTin_NhanSu") ---> Sao bạn biết chắc rằng tên sheet sẽ là "ThongTin_NhanSu"? ---> Không tổng quát
2> Về vấn đề đường dẫn đến file hình, bạn có đoạn:
Mã:
Đoạn: [COLOR=#000000] [/COLOR][B]LockAspectRatio = msoFalse  ấy ghi vào module là được hả thầy? hay thế nào mong thầy chỉ giúp em ![/B]
myPicPath = ThisWorkbook.Path
If (Right(myPicPath, 1) <> "\") Then myPicPath = myPicPath & "\"
myPictName = myPicPath & MSNV & ".JPG"
Sao bạn biết chắc rằng mấy tấm hình người ta để chung folder với file Excel? ---> Không tổng quát
3> Bạn dùng hàm Dir: Dir(CStr(myPictName)): Sẽ không hoạt động với đường dẫn là tiếng Việt có dấu. Nên dùng Scripting.FileSystemObject
4> Code trên, nếu chạy trên version từ 2007 trở lên thì hình sẽ bị lệch. Phải có đoạn LockAspectRatio = msoFalse để điều chỉnh vụ này
vân vân....
Đoạn LockAspectRatio = msoFalse ấy ghi ở trong module hả anh?
 
Thì cũng gần giống cách của bạn thôi
Code của bạn cũng tạm ổn, nhưng có mấy vấn đề:
1> Set curWks = Worksheets("ThongTin_NhanSu") ---> Sao bạn biết chắc rằng tên sheet sẽ là "ThongTin_NhanSu"? ---> Không tổng quát
2> Về vấn đề đường dẫn đến file hình, bạn có đoạn:
Mã:
myPicPath = ThisWorkbook.Path
If (Right(myPicPath, 1) <> "\") Then myPicPath = myPicPath & "\"
myPictName = myPicPath & MSNV & ".JPG"
Sao bạn biết chắc rằng mấy tấm hình người ta để chung folder với file Excel? ---> Không tổng quát
3> Bạn dùng hàm Dir: Dir(CStr(myPictName)): Sẽ không hoạt động với đường dẫn là tiếng Việt có dấu. Nên dùng Scripting.FileSystemObject
4> Code trên, nếu chạy trên version từ 2007 trở lên thì hình sẽ bị lệch. Phải có đoạn LockAspectRatio = msoFalse để điều chỉnh vụ này
vân vân....

Dạ cám ơn thầy nhiều. Em sẽ nghiên cứu lại mấy vấn đề thầy chỉ dẫn. Vì rất thích VBA nên em tự mài mò làm và nghiên cứu dựa trên những bài viết của các thầy trên GPE này.
 
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

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

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

Ủ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?
 
Chỉnh được như vậy là hết cở rồi đấy! Không thể làm hơn được đâu
File nặng em cũng biết là có file rác nhưng mà chỉ biết chọn xóa từng hình một, làm thế nào mà anh xóa được hết vậy anh? À còn cái hôm trước một số ảnh không vào là do định dạng khác không phải JPEG anh ạ :)
 
Anh ơi cho em hỏi, vậy khi muốn có ảnh bắt buộc phải để chung folder ảnh và file excel à anh? Có cách nào save vẫn giữ được ảnh mà không file để cùng thư mục không anh bất tiện?
 
Như trong bài http://www.giaiphapexcel.com/forum/showthread.php?86289-Giúp-chèn-ảnh-tự-động-vào-exel-2007 các anh chị đã chỉ bảo em rất nhiệt tình. Cho em hỏi thêm môt vấn đề nhỏ nữa là sau khi ảnh đã tự load vào cell rồi có cách nào save để không cần để chung vào thư mục ảnh nữa mà ảnh vẫn không mất được không ạ? Nói cách khác là add cứng vào file luôn.
--------------------------------------------------
À em làm được rồi, save lại đuôi xlsx là ok
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chỉnh được như vậy là hết cở rồi đấy! Không thể làm hơn được đâu

Thầy ndu96081631 cho em hỏi thêm, nhờ file của thầy em đã ứng dụng được rất nhiều trong công việc, em có thêm một mong muốn không biết có thể được không. Em muốn khung ảnh dù chỉnh thế nào cũng sẽ cách 4 cạnh một khoảng cách nhất định và có thêm đường viền ảnh, như vậy có được không ạ?
 

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

Back
Top Bottom