VBA có được không bạn? Giả sử cột A chứa URL:Em chào cả nhà, Hôm bữa em có thấy trên facebook có bạn chia sẻ cách gì đó giúp gọi title của website (như ảnh đính kèm). Các anh các chị có ai biết chỉ giúp em với ạ, em xin chân thành cảm ơn!
View attachment 175432
Sub abc()
Dim a As Range, i As Long
For i = 2 To Range("A" & Rows.Count).End(3).Row
Set a = Range("A" & i)
If a = "" Then Exit Sub
Range("B" & i) = Split(a, ".")(1)
Next i
End Sub
Hình như không phải có đó á...VBA có được không bạn? Giả sử cột A chứa URL:
PHP:Sub abc() Dim a As Range, i As Long For i = 2 To Range("A" & Rows.Count).End(3).Row Set a = Range("A" & i) If a = "" Then Exit Sub Range("B" & i) = Split(a, ".")(1) Next i End Sub
Có phải cái dòng chữ nằm trong <title>Lấy dòng chữ này</title>Em chào cả nhà, Hôm bữa em có thấy trên facebook có bạn chia sẻ cách gì đó giúp gọi title của website (như ảnh đính kèm). Các anh các chị có ai biết chỉ giúp em với ạ, em xin chân thành cảm ơn!
View attachment 175432
=GetTitle(A1)
Option Explicit
'------------------------------------------
Const sTxt As String = "<title"
Const eTxt As String = "</title>"
Const Deli As String = ">"
Const txtMatch As String = "*<title*</title*"
'------------------------------------------
Public Function GetTitle(ByVal link As String) As String
Dim i As Long, j As Long, k As Long, tmpText As String, tmpArr As Variant, tTile As String, m As Long
tmpArr = GetmpXML(link)
For i = LBound(tmpArr) To UBound(tmpArr)
tmpText = tmpArr(i)
If tmpText Like txtMatch Then
j = InStr(tmpText, sTxt)
k = InStr(tmpText, eTxt)
tTile = Mid(tmpText, j, k - j)
m = InStr(tTile, Deli)
If m Then
GetTitle = Split(tTile, Deli)(1)
Exit For
End If
End If
Next i
End Function
'------------------------------------------
Public Function GetmpXML(ByVal HTMLlink As String) As Variant
Dim Str As String
With CreateObject("MSXML2.ServerXMLHTTP")
.Open "GET", HTMLlink, False
.Send
Str = .ResponseText
End With
GetmpXML = Split(Str, ChrW(10))
End Function
VBA có được không bạn? Giả sử cột A chứa URL:Em chào cả nhà, Hôm bữa em có thấy trên facebook có bạn chia sẻ cách gì đó giúp gọi title của website (như ảnh đính kèm). Các anh các chị có ai biết chỉ giúp em với ạ, em xin chân thành cảm ơn!
View attachment 175432
Sub abc()
Dim a As Range, i As Long
For i = 2 To Range("A" & Rows.Count).End(3).Row
Set a = Range("A" & i)
If a = "" Then Exit Sub
Range("B" & i) = Split(a, ".")(1)
Next i
End Sub
Cách của bạn hay quá!híc...
Công thức ở bảng tính:
(Dùng công thức nặng ngỏm luôn...)PHP:=GetTitle(A1)
PHP:Option Explicit '------------------------------------------ Const sTxt As String = "<title" Const eTxt As String = "</title>" Const Deli As String = ">" Const txtMatch As String = "*<title*</title*" '------------------------------------------ Public Function GetTitle(ByVal link As String) As String Dim i As Long, j As Long, k As Long, tmpText As String, tmpArr As Variant, tTile As String, m As Long tmpArr = GetmpXML(link) For i = LBound(tmpArr) To UBound(tmpArr) tmpText = tmpArr(i) If tmpText Like txtMatch Then j = InStr(tmpText, sTxt) k = InStr(tmpText, eTxt) tTile = Mid(tmpText, j, k - j) m = InStr(tTile, Deli) If m Then GetTitle = Split(tTile, Deli)(1) Exit For End If End If Next i End Function '------------------------------------------ Public Function GetmpXML(ByVal HTMLlink As String) As Variant Dim Str As String With CreateObject("MSXML2.ServerXMLHTTP") .Open "GET", HTMLlink, False .Send Str = .ResponseText End With GetmpXML = Split(Str, ChrW(10)) End Function
Cảm ơn bác nhiều, nhưng mà VBA thì em chẳng biết gì. Có cách nào đơn giản hơn không ạVBA có được không bạn? Giả sử cột A chứa URL:
PHP:Sub abc() Dim a As Range, i As Long For i = 2 To Range("A" & Rows.Count).End(3).Row Set a = Range("A" & i) If a = "" Then Exit Sub Range("B" & i) = Split(a, ".")(1) Next i End Sub
Cách của bạn hay quá!
Dạ đúng rồi bác, nó còn gọi là tiêu đề web đó ạCó phải cái dòng chữ nằm trong <title>Lấy dòng chữ này</title>
(Là cái dòng hiện ở trên thanh tiêu đề của trình duyệt web)
p/s: Nhìn cái avatar thấy ghê quá tahíc...
Có cách chứ. Mình mở từng địa chỉ web đó lên, nhìn tiêu đề mỗi trang web là gì rồi gõ gõ vào cột kế bên.Cảm ơn bác nhiều, nhưng mà VBA thì em chẳng biết gì. Có cách nào đơn giản hơn không ạ
Cách của bác hay quá, bác không nói thì em không thể nghĩ ra được đâuCó cách chứ. Mình mở từng địa chỉ web đó lên, nhìn tiêu đề mỗi trang web là gì rồi gõ gõ vào cột kế bên.
P/s: avatar nhìn như *tướng ấy)
Hay quá em!híc...
Công thức ở bảng tính:
(Dùng công thức nặng ngỏm luôn...)PHP:=GetTitle(A1)
PHP:Option Explicit '------------------------------------------ Const sTxt As String = "<title" Const eTxt As String = "</title>" Const Deli As String = ">" Const txtMatch As String = "*<title*</title*" '------------------------------------------ Public Function GetTitle(ByVal link As String) As String Dim i As Long, j As Long, k As Long, tmpText As String, tmpArr As Variant, tTile As String, m As Long tmpArr = GetmpXML(link) For i = LBound(tmpArr) To UBound(tmpArr) tmpText = tmpArr(i) If tmpText Like txtMatch Then j = InStr(tmpText, sTxt) k = InStr(tmpText, eTxt) tTile = Mid(tmpText, j, k - j) m = InStr(tTile, Deli) If m Then GetTitle = Split(tTile, Deli)(1) Exit For End If End If Next i End Function '------------------------------------------ Public Function GetmpXML(ByVal HTMLlink As String) As Variant Dim Str As String With CreateObject("MSXML2.ServerXMLHTTP") .Open "GET", HTMLlink, False .Send Str = .ResponseText End With GetmpXML = Split(Str, ChrW(10)) End Function
Function WebTitle(ByVal sURL As String) As String
Dim sTmp, lPos, aURL, itemURL
On Error Resume Next
If UCase(Left(sURL, 4)) <> "HTTP" Then
aURL = Array("http://" & sURL, "https://" & sURL)
Else
aURL = Array(sURL)
End If
For Each itemURL In aURL
With CreateObject("MSXML2.ServerXMLHTTP")
.Open "GET", itemURL, False
.Send ""
sTmp = .ResponseText
End With
If Len(sTmp) Then Exit For
Next
If Len(sTmp) Then
lPos = InStr(1, UCase(sTmp), "<TITLE>")
If lPos Then
sTmp = Mid(sTmp, lPos + 7)
lPos = InStr(1, UCase(sTmp), "</TITLE>")
If lPos Then WebTitle = Mid(sTmp, 1, lPos - 1)
End If
End If
End Function
Facebook hơi khác chút chỗ này nên code của anh: lPos sẽ không có.PHP:lPos = InStr(1, UCase(sTmp), "<TITLE>")
<title id="pageTitle">Chào mừng bạn đến với Facebook - Đăng nhập, Đăng ký hoặc Tìm hiểu thêm</title>
<title id="pageTitle">Facebook - Log In or Sign Up</title>
Cảm ơn bạn phát hiện (tôi cũng không rành mấy vụ này lắm)Facebook hơi khác chút chỗ này nên code của anh: lPos sẽ không có.
PHP:<title id="pageTitle">Chào mừng bạn đến với Facebook - Đăng nhập, Đăng ký hoặc Tìm hiểu thêm</title> <title id="pageTitle">Facebook - Log In or Sign Up</title>
Function WebTitle(ByVal sURL As String) As String
Dim sTmp, lPos, aURL, itemURL
On Error Resume Next
If UCase(Left(sURL, 4)) <> "HTTP" Then
aURL = Array("http://" & sURL, "https://" & sURL)
Else
aURL = Array(sURL)
End If
For Each itemURL In aURL
With CreateObject("MSXML2.ServerXMLHTTP")
.Open "GET", itemURL, False
.Send ""
sTmp = .ResponseText
End With
If Len(sTmp) Then Exit For
Next
If Len(sTmp) Then
lPos = InStr(1, UCase(sTmp), "<TITLE")
If lPos Then
sTmp = Mid(sTmp, lPos)
lPos = InStr(1, sTmp, ">")
sTmp = Mid(sTmp, lPos + 1)
lPos = InStr(1, UCase(sTmp), "</TITLE>")
If lPos Then WebTitle = Mid(sTmp, 1, lPos - 1)
End If
End If
End Function