Chào anh chị em trong diễn đàn!
Tôi có một file txt như file đính kèm.Nội dung trong đó có chứa các đường link cần lấy nằm trong các thẻ của html.Các anh chị cho hỏi làm sao để dùng Vba lấy các đường link đó ra excel ?
Xin chân thành cảm ơn!
Giả sử sample.txt và tập tin Excel nằm cùng thư mục. Nếu khác thì sửa filename. Không phải chọn gì trong Tools cả.
Mã:
Sub Test()
Dim count As Long, filename As String, text As String
Dim htmlDocument As Object, fso As Object
Dim el As Object
Set htmlDocument = CreateObject("HtmlFile")
Set fso = CreateObject("Scripting.FileSystemObject")
filename = ThisWorkbook.Path & "\sample.txt"
htmlDocument.body.innerHTML = "<html><head>" & fso.OpenTextFile(filename).ReadAll
For Each el In htmlDocument.getElementsByTagName("a")
count = count + 1
Sheet1.Range("A" & count).Value = el.href
Next el
Set htmlDocument = Nothing
Set fso = Nothing
End Sub
Nếu tôi hiểu link trong "Lấy đường link ..." là link thực sự thì chưa có code nào trong chủ đề này làm chuẩn 100%. Hoặc làm vừa thiếu vừa thừa, hoặc cho kết quả sai.
Với tôi thì link là cái mắt tôi nhìn thấy, tay tôi có thể đưa chuột tới nó, và khi click thì tôi sẽ được chuyển sang chỗ khác. Đấy mới là LINK. Vì thế những vd. 'https://www.332343546855.com:9900/' trong thẻ script đâu có là link? Có nhìn thấy, có thể click vào https://www.332343546855.com:9900/ không?
Giả sử sample.txt và tập tin Excel nằm cùng thư mục. Nếu khác thì sửa filename. Không phải chọn gì trong Tools cả.
Mã:
Sub Test()
Dim count As Long, filename As String, text As String
Dim htmlDocument As Object, fso As Object
Dim el As Object
Set htmlDocument = CreateObject("HtmlFile")
Set fso = CreateObject("Scripting.FileSystemObject")
filename = ThisWorkbook.Path & "\sample.txt"
htmlDocument.body.innerHTML = "<html><head>" & fso.OpenTextFile(filename).ReadAll
For Each el In htmlDocument.getElementsByTagName("a")
count = count + 1
Sheet1.Range("A" & count).Value = el.href
Next el
Set htmlDocument = Nothing
Set fso = Nothing
End Sub
Cảm ơn bạn đã quan tâm bài viết. Đúng như bạn nói là link khi nhấn vào sẽ được chuyển đến trang khác. Với đoạn script là đoạn code random để chạy ngẫu nhiên các link trong thẻ list danh sách kia. Và những đường link đó tôi cũng muốn lấy. Nghĩa là trong tập html của web đó có đường link là sẽ lấy đấy bạn. Nhìn cách viết code của bạn thì hình như có thể lấy trực tiếp khi có địa chỉ trang web đó chứ không nhất thiết là một file txt đúng không. Hiện tại tôi không ngồi máy tính. Ngày mai tôi sẽ thử code của bạn.? Chân thành cảm ơn!
Cảm ơn bạn đã quan tâm bài viết. Đúng như bạn nói là link khi nhấn vào sẽ được chuyển đến trang khác. Với đoạn script là đoạn code random để chạy ngẫu nhiên các link trong thẻ list danh sách kia. Và những đường link đó tôi cũng muốn lấy. Nghĩa là trong tập html của web đó có đường link là sẽ lấy đấy bạn. Hiện tại tôi không ngồi máy tính. Ngày mai tôi sẽ thử code của bạn. Chân thành cảm ơn!
Ở bài #12 tôi đã có nói chỉ cần dùng đúng cái object để parse Dom Document là giản dị và chính xác.
Nhưng có lẽ bà con thấy cái code dùng Regex nên hứng chí thử vậy thôi.
Ở bài #12 tôi đã có nói chỉ cần dùng đúng cái object để parse Dom Document là giản dị và chính xác.
Nhưng có lẽ bà con thấy cái code dùng Regex nên hứng chí thử vậy thôi.
Giả sử sample.txt và tập tin Excel nằm cùng thư mục. Nếu khác thì sửa filename. Không phải chọn gì trong Tools cả.
Mã:
Sub Test()
Dim count As Long, filename As String, text As String
Dim htmlDocument As Object, fso As Object
Dim el As Object
Set htmlDocument = CreateObject("HtmlFile")
Set fso = CreateObject("Scripting.FileSystemObject")
filename = ThisWorkbook.Path & "\sample.txt"
htmlDocument.body.innerHTML = "<html><head>" & fso.OpenTextFile(filename).ReadAll
For Each el In htmlDocument.getElementsByTagName("a")
count = count + 1
Sheet1.Range("A" & count).Value = el.href
Next el
Set htmlDocument = Nothing
Set fso = Nothing
End Sub