نمایش نتایج: از شماره 1 تا 4 , از مجموع 4

موضوع: اصلاح كد جستجوي ليستي از كليد واژه ها توسط گوگل به كمك اكسل. اساتيد حرفه اي كمك كنن!

  1. #1


    آخرین بازدید
    2019/04/01
    تاریخ عضویت
    January 2014
    نوشته ها
    55
    امتیاز
    32
    سپاس
    39
    سپاس شده
    22 در 9 پست
    تعیین سطح نشده است

    اصلاح كد جستجوي ليستي از كليد واژه ها توسط گوگل به كمك اكسل. اساتيد حرفه اي كمك كنن!

    سلام بر اساتيد گرامي
    كدي كه در زير معرفي مي كنم، ليستي از كليد واژه هاي شما را در گوگل جستجو مي كند و لينك و عنوان تاپ ليست (اولين ركورد جستجو) را بر مي گرداند.
    کد PHP:
     Sub XMLHTTP()

        
    Dim url As StringlastRow As Long
        Dim XMLHTTP 
    As Objecthtml As ObjectobjResultDiv As ObjectobjH3 As Objectlink As Object
        Dim start_time 
    As Date
        Dim end_time 
    As Date

        lastRow 
    Range("A" Rows.Count).End(xlUp).Row

        Dim cookie 
    As String
        Dim result_cookie 
    As String

        start_time 
    Time
        Debug
    .Print "start_time:" start_time

        
    For 2 To lastRow

            url 
    "https://www.google.co.in/search?q=" Cells(i1) & "&rnd=" WorksheetFunction.RandBetween(110000)

            
    Set XMLHTTP CreateObject("MSXML2.serverXMLHTTP")
            
    XMLHTTP.Open "GET"urlFalse
            XMLHTTP
    .setRequestHeader "Content-Type""text/xml"
            
    XMLHTTP.setRequestHeader "User-Agent""Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
            
    XMLHTTP.send

                Set html 
    CreateObject("htmlfile")
            
    html.body.innerHTML XMLHTTP.ResponseText
            Set objResultDiv 
    html.getelementbyid("rso")
            
    Set objH3 objResultDiv.getelementsbytagname("H3")(0)
            
    Set link objH3.getelementsbytagname("a")(0)


            
    str_text Replace(link.innerHTML"<EM>""")
            
    str_text Replace(str_text"</EM>""")

            
    Cells(i2) = str_text
            Cells
    (i3) = link.href
            DoEvents
        Next

        end_time 
    Time
        Debug
    .Print "end_time:" end_time

        Debug
    .Print "done" "Time taken : " DateDiff("n"start_timeend_time)
        
    MsgBox "done" "Time taken : " DateDiff("n"start_timeend_time)
    End Sub

    enter image description here 
    اين كد يك مشكل بزرگ دارد. آن هم اينست كه اگر كليد واژه اي در گوگل موجود نباشد، خطا مي دهد و عمليات جستجو را متوقف مي كند. كسي از اساتيد هست كه بتواند اين كد را اصلاح كند؟
    به عنوان مثال در فايل پيوست تا رديف 4 را به خوبي جستجو مي كند و به رديف 5 كه مي رسد، عمليات جستجو متوقف مي شود (چون اگر واژه sdassdaddsdasdda را در گوگل سرچ كنيد، نتيجه اي در بر ندارد.). حالا ميخواهيم كد به شيوه اي اصلاح شود كه اگر واژه اي در گوگل جستجو شد و نتيجه اي در بر نداشت، در ستون B2 و جلوي همون واژه بنويسه كه مثلا No information availble و عمليات جستجو ادامه پيدا كند.

    اطلاعات بيشتر در لينك زير:
    http://stackoverflow.com/questions/1...k-of-the-first
    اخطار: این یک موضوع قدیمی است
    به دلیل قدیمی بودن موضوع، ممکن است برخی فایل های ضمیمه به درستی کار نکنند. لطفا در صورت عدم ضرورت، از بالا آوردن موضوعات قدیمی خودداری نمایید.
    پاسخ مورد نظر براي اين تاپيك ارسال شده است.
    ویرایش توسط afshin3a : 2016/01/23 در ساعت 08:49

  2.  

  3. #2


    آخرین بازدید
    2023/08/17
    تاریخ عضویت
    March 2015
    محل سکونت
    آمل
    نوشته ها
    3,342
    امتیاز
    11574
    سپاس
    1,884
    سپاس شده
    8,164 در 3,010 پست
    تعیین سطح نشده است

    با سلام

    کد ذیل را بالای خطوط اول کدهای ماکرو خود اضافه کنید

    کد PHP:
    On Error Resume Next 


  4. #3


    آخرین بازدید
    2019/04/01
    تاریخ عضویت
    January 2014
    نوشته ها
    55
    امتیاز
    32
    سپاس
    39
    سپاس شده
    22 در 9 پست
    تعیین سطح نشده است

    ممنون از پاسختون. كد را اضافه كردم ولي يه مشكل داره هنوز. به جاي اينكه مقدار "سلولي كه در جستجوي گوگل بدون نتيجه است"، خالي باشد، مقدار سلول بالاتر را اخذ مي كند.
    حداقل بايد خالي باشد. يا مثلا جلوي همون سلول بنويسه No information available.

  5. #4


    آخرین بازدید
    7 ساعت پیش
    تاریخ عضویت
    November 2013
    محل سکونت
    تهران
    نوشته ها
    1,518
    امتیاز
    6118
    سپاس
    2,884
    سپاس شده
    4,886 در 1,380 پست
    سطح اکسل
    71.67 %

    سلام،
    البته من خيلي کدتان را متوجه نشدم و زياد وارد نيستم، ولي علي الحساب يک کلکي زدم تا کارتان راه بيافتد، ولي اصولي نيست،
    حواستان باشد ديگر عبارت
    ACEDIUM ACETHYLO SALICYLICIUM جزو مواردي نيست که گوگل يافت نکند! چون آن را در اين سايت نوشته ايد! پس يک چيز ديگر به کار ببريد
    کد را به صورت زير تغيير دهيد:
    کد PHP:
    Sub XMLHTTP()
        
    Application.ScreenUpdating False
        On Error Resume Next
        Dim url 
    As StringlastRow As Long
        Dim XMLHTTP 
    As Objecthtml As ObjectobjResultDiv As ObjectobjH3 As Objectlink As Object
        Dim start_time 
    As Date
        Dim end_time 
    As Date

        lastRow 
    Range("A" Rows.Count).End(xlUp).Row
        
        Dim cookie 
    As String
        Dim result_cookie 
    As String
        
        start_time 
    Time
        Debug
    .Print "start_time:" start_time

        
    For 2 To lastRow

            url 
    "https://www.google.co.in/search?q=" Cells(i1) & "&rnd=" WorksheetFunction.RandBetween(110000)

            
    Set XMLHTTP CreateObject("MSXML2.serverXMLHTTP")
            
    XMLHTTP.Open "GET"urlFalse
            XMLHTTP
    .setRequestHeader "Content-Type""text/xml"
            
    XMLHTTP.setRequestHeader "User-Agent""Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"
            
    XMLHTTP.send

                Set html 
    CreateObject("htmlfile")
            
    html.body.innerHTML XMLHTTP.ResponseText
            Set objResultDiv 
    html.getelementbyid("rso")
            
    Set objH3 objResultDiv.getelementsbytagname("H3")(0)
            
    Set link objH3.getelementsbytagname("a")(0)


            
    str_text Replace(link.innerHTML"<EM>""")
            
    str_text Replace(str_text"</EM>""")

            
    Cells(i2) = str_text
            Cells
    (i3) = link.href
            DoEvents
        Next
        
        end_time 
    Time
        Debug
    .Print "end_time:" end_time
        
        Debug
    .Print "done" "Time taken : " DateDiff("n"start_timeend_time)
        
    Dim c As Range
        
    For Each c In Range("c2:c" lastRow)
        If 
    c.Value "" Then
        c
    .Offset(0, -1).Value "No information available"
        
    End If
        
    Next
        Application
    .ScreenUpdating True
        MsgBox 
    "done" "Time taken : " DateDiff("n"start_timeend_time)
    End Sub 

  6. سپاس ها (2)



اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. فراخواني تابع نوشته شده توسط كاربر از صفحه اصلي اكسل
    توسط m_beauti در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 6
    آخرين نوشته: 2015/07/07, 15:57
  2. كپي فايل ها توسط اكسل. آيا اكسل اينقدر قدرت دارد؟!
    توسط afshin3a در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 2
    آخرين نوشته: 2015/07/07, 04:53
  3. مدت انجام كار بر روي يك فايل اكسل
    توسط hamidreza313 در انجمن سوالات پیرامون ويژوال بيسيك - VBA Questions
    پاسخ ها: 1
    آخرين نوشته: 2014/09/21, 22:28
  4. آمار گيري توسط اكسل
    توسط ali2449 در انجمن توابع اکسل - Excel Functions
    پاسخ ها: 1
    آخرين نوشته: 2012/10/09, 10:11
  5. پاسخ ها: 4
    آخرين نوشته: 2012/09/02, 10:04

بازدید کنندگان با جستجو های زیر این صفحه را پیدا کرده اند

انجمن اكسل ايران , اكسل , اكسس , سوال و جواب اكسل , سوال اكسس , انجمن اكسل ايران , توابع اكسل, آموزش اكسل, آموزش اكسس, VBA, ويژوال بيسيك

کلمات کلیدی این موضوع

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  
  • BB code ها فعال هستند
  • شکلک ها فعال هستند
  • کد [IMG] فعال است
  • کد [VIDEO] فعال است
  • کد HTML غیر فعال است
با ما در تماس باشيد