Results 1 to 10 of 31

Thread: Lookup First URL From Google Search Result Using VBA

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Junior Member
    Join Date
    May 2013
    Posts
    11
    Rep Power
    0
    HTML Code:
    Option Explicit
    
    Sub lm_GetGooleFirstSearchAddres()
    
    
        Dim strHtml                 As String
        Dim lngLoop                 As Long
        Dim rngRange                As Range
        Dim rngCell                 As Range
        
        With ThisWorkbook.Worksheets("Sheet1")
            Set rngCell = .Range("A1").CurrentRegion.Resize(, 1)
            Set rngRange = Nothing
            On Error Resume Next
            Set rngRange = Intersect(rngCell, rngCell.Offset(1))
            On Error GoTo -1: On Error GoTo 0: Err.Clear
            If Not rngRange Is Nothing Then
                For Each rngCell In rngRange
                    With CreateObject("MSXML2.XMLHTTP")
                        .Open "get", URLEncode(rngCell.Value), False
                        .send
                        strHtml = .responseText
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<div id=""ires"">"))
                        strHtml = Mid(strHtml, 1, InStr(1, strHtml, "<div class=""s"">"))
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<a href="))
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<a href="), InStr(1, strHtml, """ onmousedown="""))
                        strHtml = Mid(strHtml, InStr(1, strHtml, """"), Len(strHtml) - 1)
                        rngCell.Offset(, 1).Value = Mid(Trim(strHtml), 2, Len(Trim(strHtml)) - 2)
                    End With
                Next rngCell
                MsgBox "Search completed.", vbInformation, "Google Search..."
            Else
                MsgBox "No data found to search.", vbCritical, "Google Search..."
            End If
        End With
        
        strHtml = vbNullString
        lngLoop = Empty
        Set rngRange = Nothing
        Set rngCell = Nothing
        
    End Sub
    
    
    Function URLEncode(EncodeStr As String) As String
        
        Dim i As Integer
        Dim erg As String
        
        Const strGogSrchUrl         As String = " http://www.google.co.in/search?output=search&sclient=psy-ab&q=|||&btnK="
        Const strConcatDelima       As String = "|||"
        
        erg = EncodeStr
    
    
        ' *** First replace '%' chr
        erg = Replace(erg, "%", Chr(1))
    
    
        ' *** then '+' chr
        erg = Replace(erg, "+", Chr(2))
        
        For i = 0 To 255
            Select Case i
                ' *** Allowed 'regular' characters
                Case 37, 43, 48 To 57, 65 To 90, 97 To 122
                
                Case 1  ' *** Replace original %
                    erg = Replace(erg, Chr(i), "%25")
            
                Case 2  ' *** Replace original +
                    erg = Replace(erg, Chr(i), "%2B")
                    
                Case 32
                    erg = Replace(erg, Chr(i), "+")
            
                Case 3 To 15
                    erg = Replace(erg, Chr(i), "%0" & Hex(i))
            
                Case Else
                    erg = Replace(erg, Chr(i), "%" & Hex(i))
                    
            End Select
        Next
        
        URLEncode = Replace(strGogSrchUrl, strConcatDelima, erg)
        'URLEncode = strGogSrchUrl & erg
        
        i = Empty
        erg = vbNullString
        
    End Function

  2. #2
    Administrator Excel Fox's Avatar
    Join Date
    Mar 2011
    Posts
    1,402
    Rep Power
    10
    Try this

    Code:
    Option Explicit
    
    Sub lm_GetGooleFirstSearchAddres()
    
    
        Dim strHtml                 As String
        Dim lngLoop                 As Long
        Dim rngRange                As Range
        Dim rngCell                 As Range
        
        With ThisWorkbook.Worksheets("Sheet1")
            Set rngCell = .Range("A1").CurrentRegion.Resize(, 1)
            Set rngRange = Nothing
            On Error Resume Next
            Set rngRange = Intersect(rngCell, rngCell.Offset(1))
            On Error GoTo -1: On Error GoTo 0: Err.Clear
            If Not rngRange Is Nothing Then
                Set objMXHTML = CreateObject("MSXML2.XMLHTTP")
                For Each rngCell In rngRange
                    With objMXHTML
                        .Open "get", URLEncode(rngCell.Value), False
                        .send
                        strHtml = .responseText
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<div id=""ires"">"))
                        strHtml = Mid(strHtml, 1, InStr(1, strHtml, "<div class=""s"">"))
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<a href="))
                        strHtml = Mid(strHtml, InStr(1, strHtml, "<a href="), InStr(1, strHtml, """ onmousedown="""))
                        strHtml = Mid(strHtml, InStr(1, strHtml, """"), Len(strHtml) - 1)
                        rngCell.Offset(, 1).Value = Mid(Trim(strHtml), 2, Len(Trim(strHtml)) - 2)
                    End With
                Next rngCell
                MsgBox "Search completed.", vbInformation, "Google Search..."
            Else
                MsgBox "No data found to search.", vbCritical, "Google Search..."
            End If
        End With
        
        strHtml = vbNullString
        lngLoop = Empty
        Set rngRange = Nothing
        Set rngCell = Nothing
        
    End Sub
    
    
    Function URLEncode(EncodeStr As String) As String
        
        Dim i As Integer
        Dim erg As String
        
        Const strGogSrchUrl         As String = " http://www.google.co.in/search?output=search&sclient=psy-ab&q=|||&btnK="
        Const strConcatDelima       As String = "|||"
        
        erg = EncodeStr
    
    
        ' *** First replace '%' chr
        erg = Replace(erg, "%", Chr(1))
    
    
        ' *** then '+' chr
        erg = Replace(erg, "+", Chr(2))
        
        For i = 0 To 255
            Select Case i
                ' *** Allowed 'regular' characters
                Case 37, 43, 48 To 57, 65 To 90, 97 To 122
                
                Case 1  ' *** Replace original %
                    erg = Replace(erg, Chr(i), "%25")
            
                Case 2  ' *** Replace original +
                    erg = Replace(erg, Chr(i), "%2B")
                    
                Case 32
                    erg = Replace(erg, Chr(i), "+")
            
                Case 3 To 15
                    erg = Replace(erg, Chr(i), "%0" & Hex(i))
            
                Case Else
                    erg = Replace(erg, Chr(i), "%" & Hex(i))
                    
            End Select
        Next
        
        URLEncode = Replace(strGogSrchUrl, strConcatDelima, erg)
        'URLEncode = strGogSrchUrl & erg
        
        i = Empty
        erg = vbNullString
        
    End Function
    A dream is not something you see when you are asleep, but something you strive for when you are awake.

    It's usually a bad idea to say that something can't be done.

    The difference between dream and aim, is that one requires soundless sleep to see and the other requires sleepless efforts to achieve

    Join us at Facebook

  3. #3
    Junior Member
    Join Date
    May 2013
    Posts
    11
    Rep Power
    0
    when I run this code I get an error. compile error: Variable not found.

Similar Threads

  1. Replies: 4
    Last Post: 04-24-2013, 10:04 AM
  2. Find the highest then lookup result
    By Stalker in forum Excel Help
    Replies: 4
    Last Post: 04-02-2013, 02:04 PM
  3. Import html source of url list in each cell
    By Sergio Alfaro Lloret in forum Excel Help
    Replies: 8
    Last Post: 07-31-2012, 03:03 AM
  4. VBA Function to Search in Array
    By Admin in forum Excel and VBA Tips and Tricks
    Replies: 0
    Last Post: 04-10-2012, 11:34 AM
  5. VBA - Excel: Disable Internet / Google
    By technicalupload in forum Excel Help
    Replies: 3
    Last Post: 10-06-2011, 09:18 AM

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •