atuan45clc
Thành viên mới

- Tham gia
- 17/2/16
- Bài viết
- 11
- Được thích
- 0
Cái này phải dùng code VBA mới làm được! Bạn thấy sao?Chào các bác,
Em có 1 bảng Excel như sau:
View attachment 194150 Cột Hyperlink là hàm lấy giá trị của các cột trước.
Tùy vào các folder lưu trên máy tính mà có dòng có Hyperlink, dòng bị lỗi như sau:
View attachment 194151
Em muốn hỏi có các nào check được ô nào Hyperlink bị lỗi hay không mà kg cần phải kích vào đường dẫn đó ạ?
Hỏi 1 câu, khi đọc xong chẳng hiểu bạn muốn cái gì luôn.Chào các bác,
Em có 1 bảng Excel như sau:
Cột Hyperlink là hàm lấy giá trị của các cột trước.
Tùy vào các folder lưu trên máy tính mà có dòng có Hyperlink, dòng bị lỗi như sau:
Em muốn hỏi có các nào check được ô nào Hyperlink bị lỗi hay không mà kg cần phải kích vào đường dẫn đó ạ?
Người ta có link tới thư mục chứ không phải link tới tập tin.Lưu ý: Cuối Link là đuôi File cần tạo Hyperlink, trong File tôi dùng Link đến File PDF, nếu File bạn muốn Link là File Word thì đổi đuôi File.
Trước khi trả lời Tôi có nêu câu này (Hỏi 1 câu, khi đọc xong chẳng hiểu bạn muốn cái gì luôn).Người ta có link tới thư mục chứ không phải link tới tập tin.
Mà người ta hỏi vấn đề khác hoàn toàn. Là không nhấn vào link mà vẫn biết là "thư mục nào đó tồn tại hay không tồn tại"
Dạ, em mù tịt VBA, bác có thể chỉ giáo thêm kg ạ?Cái này phải dùng code VBA mới làm được! Bạn thấy sao?
Cái em cần đúng như ý bác này ạ. Vì có rất nhiều dòng nên em kg muốn kiểm tra từng hyperlink một. Hyperlink này chỉ dẫn đến thư mục thôi, kg dẫn đến từng file. Trong tạo thư mục con có thể bị lỗi nên hyperlink bị lỗi. Khi kích Hyperlink báo lỗi sẽ biết được để sửa các thư mục con. Em chú thích hơi kém nên các bác thông cảm ạ.Người ta có link tới thư mục chứ không phải link tới tập tin.
Mà người ta hỏi vấn đề khác hoàn toàn. Là không nhấn vào link mà vẫn biết là "thư mục nào đó tồn tại hay không tồn tại"
Bạn dùng code sauChào các bác,
Em có 1 bảng Excel như sau, cột G có chữ OK là thư mục cột F tồn tại và có thể click vào đó để mở
View attachment 194150 Cột Hyperlink là hàm lấy giá trị của các cột trước.
Tùy vào các folder lưu trên máy tính mà có dòng có Hyperlink, dòng bị lỗi như sau:
View attachment 194151
Em muốn hỏi có các nào check được ô nào Hyperlink bị lỗi hay không mà kg cần phải kích vào đường dẫn đó ạ?
Sub check()
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 2 To Range("F" & Rows.Count).End(3).Row
If fso.FolderExists(Cells(i, 6)) Then
Cells(i, 7) = "OK"
End If
Next
End Sub
Tức là vầy nè anh: file có sẵn, link cũng đã tạo trước đó rồi. Giờ người ta muốn biết link nào còn "sống" link nào đã "chết". Chỉ vậy thôi chứ người ta không cần cách tạo ra link đâu anh.Bài trên tôi nêu vầy: đưa File lên để bạn ấy hiểu làm thế nào để tạo Hyperlink cho đúng.
Có nghĩa là cách làm của bạn để tạo Hyperlink là chưa đúng cách nên bị lỗi (chỉ có vậy thôi), tham khảo File bài 3 là làm được theo cách thủ công.
Còn cái hình này là sử dụng VBA (A tên Folder cha, B tên Folder con, nếu có cháu thì cột C ) nghĩa là có thể tạo Hyperlink đến tất cả Folder, tất cả các File trong từng Folder đó. Nhưng bạn chờ 2 người bạn trích dẫn giúp cho.
View attachment 194162
Code này chẳng liên quan gì đến hyperlink cảBạn dùng code sau
Mã:Sub check() Dim i As Integer Set fso = CreateObject("Scripting.FileSystemObject") For i = 2 To Range("F" & Rows.Count).End(3).Row If fso.FolderExists(Cells(i, 6)) Then Cells(i, 7) = "OK" End If Next End Sub
Nếu thư mục tồn tại thì hyperlink cho thư mục đó sẽ mở được chứ anhCode này chẳng liên quan gì đến hyperlink cả
Nói chung là do cách làm, nếu làm đúng thì Link sống, nếu làm không đúng thì Link chết, chứ anh chẳng cần kiểm tra từng cái Link làm chi cho mất công, nếu có vài trăm dòng không lẽ đi kiểm tra từng cái.Tức là vầy nè anh: file có sẵn, link cũng đã tạo trước đó rồi. Giờ người ta muốn biết link nào còn "sống" link nào đã "chết". Chỉ vậy thôi chứ người ta không cần cách tạo ra link đâu anh.
Dạng bài này em nhớ không lầm đã làm lâu lắm rồi, để trưa rảnh sẽ gửi lên
Nếu tôi gõ chuỗi "NDU" vào 1 cell rồi tạo hyperlink cho cell đó thì bạn tính sao? Hàm của bạn khi ấy chỉ nhìn thấy "NDU" chứ có thấy đường dẫn nào đâu mà biết sống hay chết?Nếu thư mục tồn tại thì hyperlink cho thư mục đó sẽ mở được chứ anh
...Nếu tôi gõ chuỗi "NDU" vào 1 cell rồi tạo hyperlink cho cell đó thì bạn tính sao? Hàm của bạn khi ấy chỉ nhìn thấy "NDU" chứ có thấy đường dẫn nào đâu mà biết sống hay chết
Các bạn có thể viết code để giải quyết một vấn đề cụ thể nào đó, còn tôi thì thích giải pháp tổng quát. Tuy không dám chắc đáp ứng được 100% trường hợp nhưng ít ra sẽ phục cho cho đa số mọi ngườiTheo dữ liệu của bạn ấy thì hiển thị chính là tên thư mục mà anh, vì em thấy có hàm hyperlink. Còn nếu chữ hiển thị không phải là thư mục cần hyperlink thì cần phải tìm đường dẫn cụ thể của nó. Em sẽ xem xét thêm vấn đề này.
Em thấy có function này, không biết có được không anh?Các bạn có thể viết code để giải quyết một vấn đề cụ thể nào đó, còn tôi thì thích giải pháp tổng quát. Tuy không dám chắc đáp ứng được 100% trường hợp nhưng ít ra sẽ phục cho cho đa số mọi người
Chỉ vậy thôi!
Do folder con trong máy tính bị lập sai nên em cần tìm xem hyperlink nào chết để sửa các folder con trong máy tính. Chả lẽ ngồi check từng dòng một.Tức là vầy nè anh: file có sẵn, link cũng đã tạo trước đó rồi. Giờ người ta muốn biết link nào còn "sống" link nào đã "chết". Chỉ vậy thôi chứ người ta không cần cách tạo ra link đâu anh.
Dạng bài này em nhớ không lầm đã làm lâu lắm rồi, để trưa rảnh sẽ gửi lên
Vấn đề là làm sao tìm đc các folder bị lỗi bác ạ?Nói chung là do cách làm, nếu làm đúng thì Link sống, nếu làm không đúng thì Link chết, chứ anh chẳng cần kiểm tra từng cái Link làm chi cho mất công, nếu có vài trăm dòng không lẽ đi kiểm tra từng cái.
Anh chỉ kiểm tra và sửa cái Link đầu tiên, nếu di chuyển được đến cái Folder đó là Link sống, sau đó Fill xuống là có tất cả các Link đến Folder (chỉ trừ khi gõ nhập tên Folder sai). Vậy tốt nhất là dùng VBA, nó tự lấy tên Folder và tạo Hyperlink.
Tôi đã nêu rõ tại bài 12: Chỉ kiểm tra và sửa cái Link đầu tiên, nếu di chuyển được đến cái Folder đó là Link sống, sau đó Fill xuống là có tất cả các Link đến các Folder (chỉ trừ khi gõ nhập tên Folder sai).Do folder con trong máy tính bị lập sai nên em cần tìm xem hyperlink nào chết để sửa các folder con trong máy tính. Chả lẽ ngồi check từng dòng một.
Vấn đề là làm sao tìm đc các folder bị lỗi bác ạ?
Có lẽ anh vẫn chưa hiểu yêu cầu của em. Công thức hyperlink đúng nhưng folder tạo sai nên báo lỗi. Em cần biết link nào bị lỗi mà kg phải check từng dòng một.Tôi đã nêu rõ tại bài 12: Chỉ kiểm tra và sửa cái Link đầu tiên, nếu di chuyển được đến cái Folder đó là Link sống, sau đó Fill xuống là có tất cả các Link đến các Folder (chỉ trừ khi gõ nhập tên Folder sai).
Bạn clik shape Run và chạy xem thế nàoDo folder con trong máy tính bị lập sai nên em cần tìm xem hyperlink nào chết để sửa các folder con trong máy tính. Chả lẽ ngồi check từng dòng một.
Vấn đề là làm sao tìm đc các folder bị lỗi bác ạ?
Bạn đọc câu này để hiểu: Chỉ kiểm tra và sửa cái Link đầu tiên (chứ đâu cần kiểm tra 1 đống ở dưới làm gì), nếu Link bạn làm sai thì cái Cell đầu tiên cũng chẳng vào được Folder rồi, vậy bạn chỉ sửa cái Link đầu tiên rồi File xuống (chỉ có bạn gõ tên Folder sai thì mới không mở được).Có lẽ anh vẫn chưa hiểu yêu cầu của em. Công thức hyperlink đúng nhưng folder tạo sai nên báo lỗi. Em cần biết link nào bị lỗi mà kg phải check từng dòng một.
Code của bạn:Bạn clik shape Run và chạy xem thế nào
Sub check()
Dim i As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 2 To Range("F" & Rows.Count).End(3).Row
If fso.FolderExists(Cells(i, 6)) Then
Cells(i, 7) = "OK"
Else
Cells(i, 7) = "Fail"
End If
Next
End Sub
Bài 12 tôi nêu vầy: Vậy tốt nhất là dùng VBA, nó tự lấy tên Folder và tạo Hyperlink.Có lẽ anh vẫn chưa hiểu yêu cầu của em. Công thức hyperlink đúng nhưng folder tạo sai nên báo lỗi. Em cần biết link nào bị lỗi mà kg phải check từng dòng một.
Tức là vầy nè anh: File người ta có sẵn và đang dùng công thức HYPERLINK. Đường dẫn link này phụ thuộc vào cột A, B, C và E, có nghĩa là khi ta thay đổi giá trị ở 4 cột trên thì đường dẫn phải thay đổi theo. Vấn đề ở đây là người ta không biết đường dẫn ấy có tồn tại hay không nên cần hàm để kiểm traBài 12 tôi nêu vầy: Vậy tốt nhất là dùng VBA, nó tự lấy tên Folder và tạo Hyperlink.
Vậy thì đâu cần kiểm tra làm gì, nếu code không tạo được Hyperlink thì sửa code.
Nói chung là chủ Topic diễn giải anh không hiểu.Tức là vầy nè anh: File người ta có sẵn và đang dùng công thức HYPERLINK. Đường dẫn link này phụ thuộc vào cột A, B, C và E, có nghĩa là khi ta thay đổi giá trị ở 4 cột trên thì đường dẫn phải thay đổi theo. Vấn đề ở đây là người ta không biết đường dẫn ấy có tồn tại hay không nên cần hàm để kiểm tra
Ở đây người ta không cần tạo Hyperlink gì cả mà chỉ muốn kiểm tra đường dẫn được tạo ra bằng phép nối chuỗi ấy có tồn tại hay không mà thôi
Cái của anh là đang làm ngược với yêu cầu đó
Đây là công thức Hyperlink lấy dữ liệu từ cột A, D, E, G, anh có thể xem lại file đính kèm #1:Nói chung là chủ Topic diễn giải anh không hiểu.
Cám ơn anh. Em dùng file của anh là tìm được rồi ạ.Bạn clik shape Run và chạy xem thế nào
Bài 23 tôi nêu vầy: Vậy tốt nhất là dùng VBA, nó tự lấy tên Folder và tạo Hyperlink.Đây là công thức Hyperlink lấy dữ liệu từ cột A, D, E, G, anh có thể xem lại file đính kèm #1:
Khi kích vào hyperlink nếu các hyperlink tồn tại thì sẽ mở trực tiếp đến thư mục như sau:
Nếu link chết thì báo như sau:
Yêu cầu là làm sao tìm được tất cả Hyperlink bị lỗi, chết để sửa lại các folder con cho đúng.
File này mang về đường 4, xong cái mần con gà + thùng bia là hiểu liềnNói chung là chủ Topic diễn giải anh không hiểu.
Cái anh đang nói là trường hợp tổng quát, còn file em đưa lên là áp dụng cho trường hợp của bạn ấy xem thế nào thui ạ.Code của bạn:
Giờ tại cell F2 tôi có hàm =HYPERLINK("C:\Windows","ABC")Mã:Sub check() Dim i As Integer Set fso = CreateObject("Scripting.FileSystemObject") For i = 2 To Range("F" & Rows.Count).End(3).Row If fso.FolderExists(Cells(i, 6)) Then Cells(i, 7) = "OK" Else Cells(i, 7) = "Fail" End If Next End Sub
Tôi chắc chắn đường dẫn "C\Windows" đang tồn tại trên máy tôi. Trường hợp này code của bạn cho kết quả gì?
Liên quan đến Hyperlink (cả hàm HYPERLINK và chức năng Hyperlink) mà chỉ bám vào những gì đang hiển thị trên màn hình là... không ăn thua
Rượu ở nhà còn mấy chai, thứ 7, chúa nhật thích thì chạy qua.File này mang về đường 4, xong cái mần con gà + thùng bia là hiểu liền
Ẹc... Ẹc...
Vì thế mà tôi giải thích. Nhưng bạn vẫn không hiểu. Mà sau đó người ta cũng nói rất rõ rồiNói chung là chủ Topic diễn giải anh không hiểu.
Tức toàn bộ đường dẫn nó phải như thế. "\\Z01-oa-pc0681\G\TOMAS SYSTEM\TOMAS SYSTEM_ZONE 2\TOMAS SCAN\" và A2, B2, C2, E2 phải như thế. Nhưng do khi tạo thư mục con thì tạo sai (tên sai). Hoặc cũng có thể tạo đúng và hôm qua link vẫn sống nhưng hôm nay vì lý do nào đó (có muôn vàn lý do) thư mục không còn tồn tại.Trong tạo thư mục con có thể bị lỗi nên hyperlink bị lỗi
Người ta không hỏi cách tạo link vì link phải như thế và người ta đã tạo đúng. A2, B2, C2, E2 với kiểu dữ liệu như thế thì chắc là người ta không nhập tay từng ký tự mà rất có thể copy/paste từ csdl. Có dùng VBA tạo link thì cũng thế thôi. Ngày hôm qua link tạo bằng VBA còn sống nhưng ngày hôm nay vì lý do nào đó mà thư mục con không còn thì dĩ nhiên link tạo bằng VBA sẽ chết.Bài 23 tôi nêu vầy: Vậy tốt nhất là dùng VBA, nó tự lấy tên Folder và tạo Hyperlink.
Toàn bộ dữ liêu trong bảng excel là xuất từ chương trình, kg phải do nhập tay. Dữ liệu em quản lý khoảng gần 1 triệu files (mỗi file là một dòng). Các folder con cũng là do chương trình chạy ra. Tuy nhiên lúc tạo các thư mục con có mục tùy chọn cây thư mục. Khi tùy chọn cây thư mục sai nên khi gắn hàm Hyperlink sẽ báo lỗi. Do không thể check từng hạng mục nên em mới lên đây nhờ các bác cho cao kiến ạ. Một lần nữa cám ơn các bác đã nhiệt tình giúp đỡ!Vì thế mà tôi giải thích. Nhưng bạn vẫn không hiểu. Mà sau đó người ta cũng nói rất rõ rồi
Tức toàn bộ đường dẫn nó phải như thế. "\\Z01-oa-pc0681\G\TOMAS SYSTEM\TOMAS SYSTEM_ZONE 2\TOMAS SCAN\" và A2, B2, C2, E2 phải như thế. Nhưng do khi tạo thư mục con thì tạo sai (tên sai). Hoặc cũng có thể tạo đúng và hôm qua link vẫn sống nhưng hôm nay vì lý do nào đó (có muôn vàn lý do) thư mục không còn tồn tại.
Người ta không hỏi cách tạo link vì link phải như thế và người ta đã tạo đúng. A2, B2, C2, E2 với kiểu dữ liệu như thế thì chắc là người ta không nhập tay từng ký tự mà rất có thể copy/paste từ csdl. Có dùng VBA tạo link thì cũng thế thôi. Ngày hôm qua link tạo bằng VBA còn sống nhưng ngày hôm nay vì lý do nào đó mà thư mục con không còn thì dĩ nhiên link tạo bằng VBA sẽ chết.
Cũng chính vì phải kiểm tra nên người ta mới hỏi cách.
Vậy thì bạn phải nêu rõ cột G nó là tên Folder hay là tên File? Hình bài 26 thì thấy nó là File PDF.Toàn bộ dữ liêu trong bảng excel là xuất từ chương trình, kg phải do nhập tay. Dữ liệu em quản lý khoảng gần 1 triệu files (mỗi file là một dòng). Các folder con cũng là do chương trình chạy ra. Tuy nhiên lúc tạo các thư mục con có mục tùy chọn cây thư mục. Khi tùy chọn cây thư mục sai nên khi gắn hàm Hyperlink sẽ báo lỗi. Do không thể check từng hạng mục nên em mới lên đây nhờ các bác cho cao kiến ạ. Một lần nữa cám ơn các bác đã nhiệt tình giúp đỡ!
Bạn kiểm tra file theo đường dẫn có tồn tại hay không. Dùng File System Object với phương thức Exists. Tìm code trên mạng hoặc diễn đàn này có đầy: "Check files exist with FSO"Chào mọi người. bài nãy đã nhiều năm rồi nhưng mình vẫn chưa tìm được các giải quyết nào nên mình xin phép đào lại ạ. có ai biết làm cách nào để check Hyperlink còn sống hay không ạView attachment 293708