tìm kiếm ảnh theo danh sách (2 người xem)

Liên hệ QC

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

hoang_dr

Thành viên mới
Tham gia
9/3/20
Bài viết
24
Được thích
0
Xin nhờ các bác. em có file ảnh khoảng hơn trục ngàn cái, giờ em muốn tìm một số ảnh theo danh sách để riêng ra một tệp khác, ảnh sếp theo mã nv và họ tên ạ. mã nv là chính xác. vậy có cách nào các bác giúp em. e mới học xin thông cảm. Xin trân trọng cám ơn.
 

File đính kèm

Xin nhờ các bác. em có file ảnh khoảng hơn trục ngàn cái, giờ em muốn tìm một số ảnh theo danh sách để riêng ra một tệp khác, ảnh sếp theo mã nv và họ tên ạ. mã nv là chính xác. vậy có cách nào các bác giúp em. e mới học xin thông cảm. Xin trân trọng cám ơn.
??
 
1584503206109.png
Có phải ý bạn như thế này không. Đây là 1 file mình làm tìm kiếm hình ảnh theo tên theo ý của mình.
 
Xin nhờ các bác. em có file ảnh khoảng hơn trục ngàn cái, giờ em muốn tìm một số ảnh theo danh sách để riêng ra một tệp khác, ảnh sếp theo mã nv và họ tên ạ. mã nv là chính xác. vậy có cách nào các bác giúp em. e mới học xin thông cảm. Xin trân trọng cám ơn.
Tìm ảnh xong rồi làm cái gì tiếp?
 
View attachment 233533
Có phải ý bạn như thế này không. Đây là 1 file mình làm tìm kiếm hình ảnh theo tên theo ý của mình.
bạn ơi . mình muốn lọc các ảnh có trong danh sách riêng ra một folder khác thôi chứ không chèn vào excel. cám ơn bạn
Bài đã được tự động gộp:

Tìm ảnh xong rồi làm cái gì tiếp?
cám ơn bạn. mình muốn lọc các ảnh có trong danh sách đưa ra một folder khác để xử dung ý, bạn ạ. có thể hướng dẫn mình không?
 
Để yên chỗ đó thì không dùng được à bạn?
ý mình là trong folder ảnh có rất nhiều mà mình chỉ muốn tìm ra một số ảnh theo danh sách thôi. chứ không lấy ra hết.
Bài đã được tự động gộp:

Thầy ơi, ý họ muốn kiểu lưu ảnh từ file excel ra dạng jpg mà tên là mã nv + tên nhân viên ấy thầy ạ. Lập thành 1 file dữ liệu chứa tất cả ảnh trong file excel ấy ạ.
mình có một tập chứa rất nhiều ảnh. muốn tìm mấy cái trong đó theo danh sách . để riêng ra thôi ạ
Bài đã được tự động gộp:

ý mình là trong folder ảnh có rất nhiều mà mình chỉ muốn tìm ra một số ảnh theo danh sách thôi. chứ không lấy ra hết.
Bài đã được tự động gộp:


mình có một tập chứa rất nhiều ảnh. muốn tìm mấy cái trong đó theo danh sách . để riêng ra thôi ạ
kiểu như thế này ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
ý mình là trong folder ảnh có rất nhiều mà mình chỉ muốn tìm ra một số ảnh theo danh sách thôi. chứ không lấy ra hết.
Bài đã được tự động gộp:


mình có một tập chứa rất nhiều ảnh. muốn tìm mấy cái trong đó theo danh sách . để riêng ra thôi ạ
Tôi nghĩ là tôi hiểu ý bạn à (nhưng bạn chưa hiểu ý tôi)
Vấn đề là sau khi ta tìm xong, ta lọc các file đúng yêu cầu sang một folder khác, đúng không? Ở đây tôi đang thắc mắc là tại sao phải lọc các file ra riêng một nơi khác? Để yên vậy sẽ có gì khó khăn cho bạn?
 
Tôi nghĩ là tôi hiểu ý bạn à (nhưng bạn chưa hiểu ý tôi)
Vấn đề là sau khi ta tìm xong, ta lọc các file đúng yêu cầu sang một folder khác, đúng không? Ở đây tôi đang thắc mắc là tại sao phải lọc các file ra riêng một nơi khác? Để yên vậy sẽ có gì khó khăn cho bạn?
vâng. trong tệp ảnh của tôi có hơn 13000 cái . tôi cần tìm ra 2000 cái theo danh sách để tôi có thể in hồ sơ bạn ạ. nếu để cả trong folder đó sẽ rất khó ạ.
 
bác cho em xin file này của bác được không ạ ?

File của mình đây bạn.
Bài đã được tự động gộp:

vâng. trong tệp ảnh của tôi có hơn 13000 cái . tôi cần tìm ra 2000 cái theo danh sách để tôi có thể in hồ sơ bạn ạ. nếu để cả trong folder đó sẽ rất khó ạ.
Bạn có thể thử qua phương pháp này xem có ok không.

bạn có thể tham khảo thêm tại đây :
1. CÁCH LIỆT KÊ CÁC TẬP TIN TỪ THƯ MỤC VÀO TRANG TÍNH EXCEL
2. Kỹ thuật sao chép - di chuyển - xóa tập tin
 

File đính kèm

Lần chỉnh sửa cuối:
ý mình là trong folder ảnh có rất nhiều mà mình chỉ muốn tìm ra một số ảnh theo danh sách thôi. chứ không lấy ra hết.
Bài đã được tự động gộp:


mình có một tập chứa rất nhiều ảnh. muốn tìm mấy cái trong đó theo danh sách . để riêng ra thôi ạ
Bài đã được tự động gộp:


kiểu như thế này ạ.
Góp ý cho bạn: Theo tôi thì bạn nên theo hướng này.
1/ Bạn nên có 1 Folder cha chứa các Folder con chứa ảnh riêng cho từng bộ phận hoặc tên phòng, kho ảnh cố định một chỗ sẽ dễ dàng cho việc truy vấn hình, ảnh.
2/ Bạn nên có 1 sheet theo dõi chung, trong đó có cột tên bộ phận hoặc tên phòng.
3/ 1 sheet dùng lọc danh sách theo bộ phận.
4/ Dựa vào sheet lọc lấy dữ liệu vào1 sheet được thiết kế sẳn để làm lý lịch, hợp đồng, thẻ nhân viên hay thẻ bảo hiểm...v..v....Vấn đề của bạn cần kết quả chỗ nào lại không nêu cụ thể, rõ ràng nên không ai hiểu để giúp.
 
File của mình đây bạn.
Bài đã được tự động gộp:


Bạn có thể thử qua phương pháp này xem có ok không.

bạn có thể tham khảo thêm tại đây :
1. CÁCH LIỆT KÊ CÁC TẬP TIN TỪ THƯ MỤC VÀO TRANG TÍNH EXCEL
2. Kỹ thuật sao chép - di chuyển - xóa tập tin
dạ, em cảm ơn ạ
 
Góp ý cho bạn: Theo tôi thì bạn nên theo hướng này.
1/ Bạn nên có 1 Folder cha chứa các Folder con chứa ảnh riêng cho từng bộ phận hoặc tên phòng, kho ảnh cố định một chỗ sẽ dễ dàng cho việc truy vấn hình, ảnh.
2/ Bạn nên có 1 sheet theo dõi chung, trong đó có cột tên bộ phận hoặc tên phòng.
3/ 1 sheet dùng lọc danh sách theo bộ phận.
4/ Dựa vào sheet lọc lấy dữ liệu vào1 sheet được thiết kế sẳn để làm lý lịch, hợp đồng, thẻ nhân viên hay thẻ bảo hiểm...v..v....Vấn đề của bạn cần kết quả chỗ nào lại không nêu cụ thể, rõ ràng nên không ai hiểu để giúp.
dạ ví dụ như này ạ.
 

File đính kèm

Tôi nghĩ là tôi hiểu ý bạn à (nhưng bạn chưa hiểu ý tôi)
Vấn đề là sau khi ta tìm xong, ta lọc các file đúng yêu cầu sang một folder khác, đúng không? Ở đây tôi đang thắc mắc là tại sao phải lọc các file ra riêng một nơi khác? Để yên vậy sẽ có gì khó khăn cho bạn?
đây ạ. tôi muốn làm để có được danh sách (kết quả) như này ạ. mong anh giúp. cám ơn anh nhiều
 

File đính kèm

Bạn mở 2 chủ đề với cùng một vấn đề, chỉ sửa tiêu đề chút xíu. Như thế là vi phạm nội qui.

Hoặc có thể bạn được hưởng luật khác.

Bài có trước

 
Bạn mở 2 chủ đề với cùng một vấn đề, chỉ sửa tiêu đề chút xíu. Như thế là vi phạm nội qui.

Hoặc có thể bạn được hưởng luật khác.

Bài có trước

vậy phải làm thế nào bạn ơi.
 
vậy phải làm thế nào bạn ơi.
Nếu bạn được người ta cho hưởng luật đặc biệt thì ...

1. Cấu trúc các tên ảnh không đồng nhất. Sau Mã là "-" hoặc " " hoặc " -". Vì thế code phải xoay xở.
2. Hãy đổi tên trang tính thành "Trang_tinh1", tức không có ký tự Việt. Nếu chọn tên khác thì sửa cả trong code.
3. code cho là đã là MNV thì là duy nhất, tức không có 2 nhân viên nào có cùng MNV.
4. Code cho là ảnh nguồn nằm trong thư mục có tên là "Anh". Hãy đổi tên "danh sách ảnh" thành "Anh". Để như cũ cũng chả sao nhưng chả lý gì bầy đặt như thế. Nếu chọn tên khác thì sửa cả trong code.
5. Tập tin Excel và thư mục Anh phải đặt trong cùng 1 thư mục.
6. Code tự tạo thư mục "Loc_***" và sao chép các ảnh tìm thấy vào đấy.

Mở tập tin Excel -> Alt + F11 -> menu Insert -> Module ... -> dán code sau
Mã:
Option Explicit

Private Const folder_name = "Anh"

Sub FindAndCopy()
Dim lastRow As Long, k As Long, FolderStart As String, new_folder As String, ma As String, data, sfile, fso As Object, f As Object, dic As Object
    With ThisWorkbook.Worksheets("Trang_tinh1")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row
        If lastRow < 4 Then Exit Sub
        data = .Range("B4:B" & lastRow + 1) ' lay cac MNV vao mang data
    End With
    Set dic = CreateObject("Scripting.Dictionary")
    dic.CompareMode = vbTextCompare
    For k = 1 To UBound(data) - 1
        ma = data(k, 1) & "-"   ' "MNV-"
        If Not dic.Exists(ma) Then dic.Add ma, ""   ' cho "MNV-" vao tu dien dic
    Next k
    
    new_folder = ThisWorkbook.Path & "\Loc_" & Format(Now(), "yyyymmddhhmmss")
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateFolder new_folder ' tao thu muc moi
    FolderStart = ThisWorkbook.Path & "\" & folder_name ' thu muc chua anh nguon
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(FolderStart) Then GoTo end_ ' neu thu muc khong ton tai thi nghi choi
    Set f = fso.GetFolder(FolderStart).files    ' doc ra cac tap tin trong thu muc
    If f.count = 0 Then GoTo end_   ' neu thu muc khong co tap tin nao thi nghi choi
    For Each sfile In f
        ma = Replace(sfile.Name, " ", "-", , 1)
        ma = Left(ma, InStr(1, ma, "-"))    ' tao "MNV-" tu ten tap tin
        If dic.Exists(ma) Then fso.CopyFile sfile.Path, new_folder & "\" & sfile.Name   ' neu ma co trong tu dien thi sao chep sang thu muc moi
    Next sfile
end_:
    Set fso = Nothing
    Set dic = Nothing
End Sub
 
Nếu bạn được người ta cho hưởng luật đặc biệt thì ...

1. Cấu trúc các tên ảnh không đồng nhất. Sau Mã là "-" hoặc " " hoặc " -". Vì thế code phải xoay xở.
2. Hãy đổi tên trang tính thành "Trang_tinh1", tức không có ký tự Việt. Nếu chọn tên khác thì sửa cả trong code.
3. code cho là đã là MNV thì là duy nhất, tức không có 2 nhân viên nào có cùng MNV.
4. Code cho là ảnh nguồn nằm trong thư mục có tên là "Anh". Hãy đổi tên "danh sách ảnh" thành "Anh". Để như cũ cũng chả sao nhưng chả lý gì bầy đặt như thế. Nếu chọn tên khác thì sửa cả trong code.
5. Tập tin Excel và thư mục Anh phải đặt trong cùng 1 thư mục.
6. Code tự tạo thư mục "Loc_***" và sao chép các ảnh tìm thấy vào đấy.

Mở tập tin Excel -> Alt + F11 -> menu Insert -> Module ... -> dán code sau
Mã:
Option Explicit

Private Const folder_name = "Anh"

Sub FindAndCopy()
Dim lastRow As Long, k As Long, FolderStart As String, new_folder As String, ma As String, data, sfile, fso As Object, f As Object, dic As Object
    With ThisWorkbook.Worksheets("Trang_tinh1")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row
        If lastRow < 4 Then Exit Sub
        data = .Range("B4:B" & lastRow + 1) ' lay cac MNV vao mang data
    End With
    Set dic = CreateObject("Scripting.Dictionary")
    dic.CompareMode = vbTextCompare
    For k = 1 To UBound(data) - 1
        ma = data(k, 1) & "-"   ' "MNV-"
        If Not dic.Exists(ma) Then dic.Add ma, ""   ' cho "MNV-" vao tu dien dic
    Next k
   
    new_folder = ThisWorkbook.Path & "\Loc_" & Format(Now(), "yyyymmddhhmmss")
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.CreateFolder new_folder ' tao thu muc moi
    FolderStart = ThisWorkbook.Path & "\" & folder_name ' thu muc chua anh nguon
    Set fso = CreateObject("Scripting.FileSystemObject")
    If Not fso.FolderExists(FolderStart) Then GoTo end_ ' neu thu muc khong ton tai thi nghi choi
    Set f = fso.GetFolder(FolderStart).files    ' doc ra cac tap tin trong thu muc
    If f.count = 0 Then GoTo end_   ' neu thu muc khong co tap tin nao thi nghi choi
    For Each sfile In f
        ma = Replace(sfile.Name, " ", "-", , 1)
        ma = Left(ma, InStr(1, ma, "-"))    ' tao "MNV-" tu ten tap tin
        If dic.Exists(ma) Then fso.CopyFile sfile.Path, new_folder & "\" & sfile.Name   ' neu ma co trong tu dien thi sao chep sang thu muc moi
    Next sfile
end_:
    Set fso = Nothing
    Set dic = Nothing
End Sub
Trước tiên xin được cám ơn bạn rất nhiều.
M không phải được hưởng đặc biệt, chỉ là người mới và cao tuổi thôi. muốn vọc tý may được addmin thông cảm.
bạn ơi m đã chạy thử code của bạn vẫn thấy báo lỗi. bạn có thể chạy giúp được không. vì mới nên muốn được ưu tiên chút mong bạn hết sức thông cảm. một ần nữa xin được trân trọng cảm ơn.
 
Trước tiên xin được cám ơn bạn rất nhiều.
M không phải được hưởng đặc biệt, chỉ là người mới và cao tuổi thôi. muốn vọc tý may được addmin thông cảm.
bạn ơi m đã chạy thử code của bạn vẫn thấy báo lỗi. bạn có thể chạy giúp được không. vì mới nên muốn được ưu tiên chút mong bạn hết sức thông cảm. một ần nữa xin được trân trọng cảm ơn.
Với tôi "báo lỗi" chả nói lên cái gì cụ thể. Bó tay.

Nếu bạn muốn nói chuyện với tôi thì phải có tập tin, tôi hơi khó tính. Làm sao tôi biết bạn đã đính kèm, chỉnh sửa code của tôi như thế nào.

Tóm lại: đính kèm tập tin và giải thích cụ thể.
 
Trước tiên xin được cám ơn bạn rất nhiều.
M không phải được hưởng đặc biệt, chỉ là người mới và cao tuổi thôi. muốn vọc tý may được addmin thông cảm.
bạn ơi m đã chạy thử code của bạn vẫn thấy báo lỗi. bạn có thể chạy giúp được không. vì mới nên muốn được ưu tiên chút mong bạn hết sức thông cảm. một ần nữa xin được trân trọng cảm ơn.
Bạn nêu mới tham gia diễn đàn là chuẩn.
Còn việc nêu, bạn là người cao tuổi có cái gì đó sai sai, vì sao? Vì trong số vài người trả lời cho bạn ít nhất họ cũng lớn hơn bạn gần 20 tuổi.
 
Xin nhờ các bác. em có file ảnh khoảng hơn trục ngàn cái, giờ em muốn tìm một số ảnh theo danh sách để riêng ra một tệp khác, ảnh sếp theo mã nv và họ tên ạ. mã nv là chính xác. vậy có cách nào các bác giúp em. e mới học xin thông cảm. Xin trân trọng cám ơn.
Bạn copy file dưới vào folder của bạn chạy thử xem thế nào nhé.
 

File đính kèm

Với tôi "báo lỗi" chả nói lên cái gì cụ thể. Bó tay.

Nếu bạn muốn nói chuyện với tôi thì phải có tập tin, tôi hơi khó tính. Làm sao tôi biết bạn đã đính kèm, chỉnh sửa code của tôi như thế nào.

Tóm lại: đính kèm tập tin và giải thích cụ thể.
đây ạ. bạn xem giúp
Bài đã được tự động gộp:

Bạn nêu mới tham gia diễn đàn là chuẩn.
Còn việc nêu, bạn là người cao tuổi có cái gì đó sai sai, vì sao? Vì trong số vài người trả lời cho bạn ít nhất họ cũng lớn hơn bạn gần 20 tuổi.
cám ơn bạn. vậy ra 70 tuổi vẫn đam mê, như vậy tôi chắc quá trẻ rồi . hì
 

File đính kèm

Tôi là người thường hướng dẫn rất kỹ. Vì tôi lường được là trong tập tin thực bạn sẽ có rất khác với tập tin ví dụ. Bạn để ý sẽ thấy là rất nhiều người không hướng dẫn đâu.

Hãy đọc lại 6 điểm trong bài #19 của tôi xem bạn có làm đúng không.
Trích
2. Hãy đổi tên trang tính thành "Trang_tinh1", tức không có ký tự Việt. Nếu chọn tên khác thì sửa cả trong code.
Bây giờ tên sheet không còn là "Trang_tinh1" nữa mà là "Sheet1". Nhưng bạn không sửa trong code. Trong code vẫn là
Mã:
With ThisWorkbook.Worksheets("Trang_tinh1")

Còn một cái tôi thấy nữa. Trong tập tin ví dụ dữ liệu bạn có trong 2 cột B và C, từ dòng 3 trở xuống. Bây giờ bạn có trong cột A và B, từ dòng 1 trở xuống. Làm thế thì code bó tay. Nó thao tác trong B4:C... nhưng bây giờ dữ liệu lại là A1:B... thế thì toi rồi.

Tại sao bạn không đính kèm tập tin với code của tôi? Tập tin XLSX không bao giờ chứa code. Sau khi chèn code thì ghi lại dưới định dạng XLSM.

Thôi tôi gửi luôn tập tin đã có code.

Code không copy ảnh của MNV = 1356 vì trong thư mục ảnh không có ảnh cho 1356.
 

File đính kèm

Tôi là người thường hướng dẫn rất kỹ. Vì tôi lường được là trong tập tin thực bạn sẽ có rất khác với tập tin ví dụ. Bạn để ý sẽ thấy là rất nhiều người không hướng dẫn đâu.

Hãy đọc lại 6 điểm trong bài #19 của tôi xem bạn có làm đúng không.
Trích

Bây giờ tên sheet không còn là "Trang_tinh1" nữa mà là "Sheet1". Nhưng bạn không sửa trong code. Trong code vẫn là
Mã:
With ThisWorkbook.Worksheets("Trang_tinh1")

Còn một cái tôi thấy nữa. Trong tập tin ví dụ dữ liệu bạn có trong 2 cột B và C, từ dòng 3 trở xuống. Bây giờ bạn có trong cột A và B, từ dòng 1 trở xuống. Làm thế thì code bó tay. Nó thao tác trong B4:C... nhưng bây giờ dữ liệu lại là A1:B... thế thì toi rồi.

Tại sao bạn không đính kèm tập tin với code của tôi? Tập tin XLSX không bao giờ chứa code. Sau khi chèn code thì ghi lại dưới định dạng XLSM.

Thôi tôi gửi luôn tập tin đã có code.

Code không copy ảnh của MNV = 1356 vì trong thư mục ảnh không có ảnh cho 1356.
XIN LỖI BẠN. THẬT SỰ CÁM ƠN BẠN RẤT NHIỀU. BẠN RẤT NHIỆT TÌNH VÀ CŨNG KIÊN NHẪN NỮA. XIN ĐƯỢC CÁM ƠN
 
XIN LỖI BẠN. THẬT SỰ CÁM ƠN BẠN RẤT NHIỀU. BẠN RẤT NHIỆT TÌNH VÀ CŨNG KIÊN NHẪN NỮA. XIN ĐƯỢC CÁM ƠN
tôi đã chạy thử . rất ok. chỉ là khi tôi đưa thêm vào tình huống nếu như ảnh chỉ có MNV không có tên. thì không đọc được bạn ạ. vậy phải xử lý như thế nào.
 
tôi đã chạy thử . rất ok. chỉ là khi tôi đưa thêm vào tình huống nếu như ảnh chỉ có MNV không có tên. thì không đọc được bạn ạ. vậy phải xử lý như thế nào.
Chính vì dữ liệu của bạn không đồng nhất nên tôi đã viết ngay từ bài đầu
1. Cấu trúc các tên ảnh không đồng nhất. Sau Mã là "-" hoặc " " hoặc " -". Vì thế code phải xoay xở.
Tức ảnh lúc có dạng "MNV-Tên" (không có dấu cách giữa MNV và tên), lúc là"MNV Tên" (dấu cách thay dấu -), lúc thì "MNV -Tên" (cả dấu cách và -). Bây giờ lại thêm chỉ có MNV không có tên.

Tôi làm thêm cho bạn trường hợp chỉ có MNV không có tên. Tức trong sheet phải có MNV còn Tên có thể có có thể không, nhưng tên ảnh trên đĩa bắt buộc phải có MNV (tên có thể có hoặc không). Nhưng nếu có thêm tên thì bắt buộc phải có ít nhất là dấu cách hoặc dấu - ngăn cách MNV và tên. Tức ảnh trên đĩa phải có 1 trong những dạng sau: "MNV-tên.jpg", "MNV tên.jpg", "MNV -tên.jpg", "MNV- tên.jpg", "MNV.jpg".

Trong Sub FindAndCopy hãy tìm dòng (chỉ có duy nhất 1 dòng như thế)
Mã:
ma = Replace(sfile.Name, " ", "-", , 1)
và ĐỔI thành
Mã:
ma = Replace(Replace(sfile.Name, ".", "-"), " ", "-", , 1)

Lưu ý: trong tập tin ở bài #24 trên sheet bạn nhập A4 = 1356, B4 = rỗng (không có tên) code không tìm được ảnh trên đĩa do trên đĩa không có ảnh nào có MNV = 1356. Có 1 ảnh với tên ".jpg". Tức ảnh chỉ có định dạng JPG mà không có tên. Không thể gán ảnh như thế cho MNV = 1356 được. Vì sao? Suy nghĩ lôgíc thì thấy thôi. Giả dụ trên sheet có 2 MNV mà không có tên. A4 = 1356, B4 rỗng, A5 = 9876, B5 = rỗng. Vậy thì ảnh trên đĩa ".jpg" kia là thuộc MNV = 1356 hy thuộc MNV = 9876? Không thể biết được.

Vì thế ảnh trên đĩa luôn phải chứa MNV ở đầu.

Tôi không xét trường hợp có tên (cả trên sheet và ảnh trên điã) mà không có MNV. Vì với tôi MNV mới là duy nhất, tên có thể trùng. Vì thế tôi chỉ xét MNV thôi.

Muốn code chạy được thì dữ liệu (trên sheet và ảnh trên đĩa) phải có một qui luật nhất định. Có thể chấp nhận một "sai số" nhất định (dấu - hoặc dấu cách, hoặc cả - và dấu cách, hoặc chả có - và dấu cách - chỉ là MNV.jpg) nhưng code không chấp nhận dữ liệu bừa bãi.
-------------
Tôi nhầm lẫn chút. Trong code dòng
Mã:
Set fso = CreateObject("Scripting.FileSystemObject")
xuất hiện 2 lần. Lần xuất hiện thứ 2 thừa, bạn có thể xóa đi. Sai không sai nhưng thừa không cần thiết.
 
Lần chỉnh sửa cuối:
Xin nhờ các bác. em có file ảnh khoảng hơn trục ngàn cái, giờ em muốn tìm một số ảnh theo danh sách để riêng ra một tệp khác, ảnh sếp theo mã nv và họ tên ạ. mã nv là chính xác. vậy có cách nào các bác giúp em. e mới học xin thông cảm. Xin trân trọng cám ơn.
-------------------


Tham khảo file bài viết:

https://www.giaiphapexcel.com/diendan/threads/lấy-danh-sách-đường-dẫn-file-và-thư-mục-trong-vba.145043/#post-957066
 
Với khả năng được thể hiện qua các bài viết trong chủ đề này thì tôi e rằng chủ thớt sau khi đọc chủ đề của bạn cũng không viết được code cho vấn đề của mình đâu. Hãy đọc kỹ vấn đề của người ta thì sẽ biết.
Việc liệt kê các tập tin trong thư mục thì code của tôi cũng có rồi. Vấn đề là cái "tiếp theo" kia.
 
Chính vì dữ liệu của bạn không đồng nhất nên tôi đã viết ngay từ bài đầu

Tức ảnh lúc có dạng "MNV-Tên" (không có dấu cách giữa MNV và tên), lúc là"MNV Tên" (dấu cách thay dấu -), lúc thì "MNV -Tên" (cả dấu cách và -). Bây giờ lại thêm chỉ có MNV không có tên.

Tôi làm thêm cho bạn trường hợp chỉ có MNV không có tên. Tức trong sheet phải có MNV còn Tên có thể có có thể không, nhưng tên ảnh trên đĩa bắt buộc phải có MNV (tên có thể có hoặc không). Nhưng nếu có thêm tên thì bắt buộc phải có ít nhất là dấu cách hoặc dấu - ngăn cách MNV và tên. Tức ảnh trên đĩa phải có 1 trong những dạng sau: "MNV-tên.jpg", "MNV tên.jpg", "MNV -tên.jpg", "MNV- tên.jpg", "MNV.jpg".

Trong Sub FindAndCopy hãy tìm dòng (chỉ có duy nhất 1 dòng như thế)
Mã:
ma = Replace(sfile.Name, " ", "-", , 1)
và ĐỔI thành
Mã:
ma = Replace(Replace(sfile.Name, ".", "-"), " ", "-", , 1)

Lưu ý: trong tập tin ở bài #24 trên sheet bạn nhập A4 = 1356, B4 = rỗng (không có tên) code không tìm được ảnh trên đĩa do trên đĩa không có ảnh nào có MNV = 1356. Có 1 ảnh với tên ".jpg". Tức ảnh chỉ có định dạng JPG mà không có tên. Không thể gán ảnh như thế cho MNV = 1356 được. Vì sao? Suy nghĩ lôgíc thì thấy thôi. Giả dụ trên sheet có 2 MNV mà không có tên. A4 = 1356, B4 rỗng, A5 = 9876, B5 = rỗng. Vậy thì ảnh trên đĩa ".jpg" kia là thuộc MNV = 1356 hy thuộc MNV = 9876? Không thể biết được.

Vì thế ảnh trên đĩa luôn phải chứa MNV ở đầu.

Tôi không xét trường hợp có tên (cả trên sheet và ảnh trên điã) mà không có MNV. Vì với tôi MNV mới là duy nhất, tên có thể trùng. Vì thế tôi chỉ xét MNV thôi.

Muốn code chạy được thì dữ liệu (trên sheet và ảnh trên đĩa) phải có một qui luật nhất định. Có thể chấp nhận một "sai số" nhất định (dấu - hoặc dấu cách, hoặc cả - và dấu cách, hoặc chả có - và dấu cách - chỉ là MNV.jpg) nhưng code không chấp nhận dữ liệu bừa bãi.
-------------
Tôi nhầm lẫn chút. Trong code dòng
Mã:
Set fso = CreateObject("Scripting.FileSystemObject")
xuất hiện 2 lần. Lần xuất hiện thứ 2 thừa, bạn có thể xóa đi. Sai không sai nhưng thừa không cần thiết.
cám ơn anh nhiều. tôi sẽ sửa
 
Với khả năng được thể hiện qua các bài viết trong chủ đề này thì tôi e rằng chủ thớt sau khi đọc chủ đề của bạn cũng không viết được code cho vấn đề của mình đâu. Hãy đọc kỹ vấn đề của người ta thì sẽ biết.
Việc liệt kê các tập tin trong thư mục thì code của tôi cũng có rồi. Vấn đề là cái "tiếp theo" kia.
---------------------------


Có lẽ Bác batman1 chưa tải File về kiểm tra, tất cả những gì mà chủ thớt mong muốn đều có ở File trong bài viết
 

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

Back
Top Bottom