ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
25 visibility
موضوع: آفیس توسط:

نیکولاس یک پرس و جو وب برای بازیابی داده های خارجی به طور منظم ایجاد کرده است. مشکل این است که او اغلب هنگام اجرای پرس و جو وب پیغام خطای "Unable to open the web page..." را دریافت می کند. این پیام زمانی ظاهر می شود که اتصال اینترنتی بین نیکولاس و وب سرور قطع شود و او باید روی پیام خطا روی OK کلیک کند تا اکسل ادامه یابد.

هنگامی که نیکولاس از رایانه خود دور است، این مشکل ایجاد می کند، زیرا ممکن است به این معنی باشد که کوئری وب تمام داده هایی را که باید جمع آوری کند را جمع آوری نمی کند، زیرا وقتی با مشکلی مواجه می شود، صبورانه منتظر کلیک روی دکمه تأیید است. نیکولاس راهی می خواهد که به درخواست وب بگوید پیام را نمایش ندهد و اگر در تلاش فعلی امکان اتصال برقرار نشد، فقط به حالت انتظار برگردد.

متأسفانه هیچ راهی وجود ندارد که به اکسل بگوییم آنچه را که می خواهید انجام دهد. هنگامی که پیام "Unable to open the web page..." ظاهر می شود، سرکوب پیام عملا غیرممکن است. تنها راه حل این است که سعی کنید یک ماکرو ایجاد کنید که در اطراف مشکل کار کند. به عنوان مثال، می توانید یک ماکرو ایجاد کنید که یک نمونه از اینترنت اکسپلورر (که مشکلی ندارد) ایجاد کند تا خطای رسیدن به صفحه وب را آزمایش کند. ماکرو زیر این رویکرد را پیاده سازی می کند.

Option Explicit
Declare Sleep API
Private Declare Sub Sleep Lib "kernel32" (ByVal nMilliseconds As Long)

Function GetData(strStartURL As String) As String
    Dim Attempt As Long
    Dim Connected As Boolean
    Dim ieDocNew As MSHTML.HTMLDocument

    GetData = "N/A"
    Attempt = 0

retry:
    Attempt = Attempt + 1

    Create browser object references and open an IE window
    Dim ieNew As New InternetExplorer
    Load page
    With ieNew
        .Visible = True       show window
        .navigate strStartURL open page
        While Not .readyState = READYSTATE_COMPLETE
            Sleep 500         wait 1/2 sec before trying again
        Wend
    End With

    The page should be open in IE, time for parsing
    Create document object model references
    Set ieDocNew = ieNew.Document

    If ieDocNew.Scripts.Length = 13 _
      And ieNew.LocationName = "Microsoft Excel Tips" _
      Then
        Connected = True
        GetData = "Data successfully captured"

        This is where you do something with the data
    End If

    Clean up IE objects
    Set ieDocNew = Nothing
    ieNew.Quit
    Set ieNew = Nothing
    DoEvents
    If Attempt < 10 And Not Connected Then GoTo retry
End Function

توجه داشته باشید که این ماکرو برای عملکرد صحیح نیاز به پیکربندی در رابط VBA دارد. به طور خاص، باید References را از منوی Tools انتخاب کنید و مطمئن شوید که پروژه شامل ارجاعاتی به Microsoft HTML Object Library و Microsoft Internet Controls است.

کاری که ماکرو انجام می دهد این است که از اینترنت اکسپلورر برای اتصال به URL ارسال شده به تابع (در strStartURL) و سپس گرفتن محتوایی که در آنجا یافت می شود استفاده می کند. اگر اتصال موفقیت آمیز باشد، Connected روی True تنظیم می شود و می توانید داده ها را در سایت تجزیه و استفاده کنید. این تابع، همانطور که نوشته شده است، «داده ها با موفقیت ضبط شد» را به روال فراخوانی برمی گرداند، اما شما می توانید به همین راحتی مقداری را که از سایت راه دور گرفته شده است، پس دهید. سپس می توان آن مقدار را، اما روال فراخوانی، در یک کاربرگ قرار داد.

همچنین توجه داشته باشید که این تابع مقداری تجزیه اولیه را در صفحه ای که می گیرد انجام می دهد و فقط در صورتی اتصال را موفق می داند که عبارات مورد انتظار را در عنوان صفحه موجود در URL پیدا کند.

برای درک نحوه عملکرد ماکرو، از چند ماکرو مانند زیر استفاده کنید:

Sub TEST_GetData1()
    MsgBox GetData("http://excel.tips.net")
End Sub
Sub TEST_GetData2()
    MsgBox GetData("http://excel.tipsxx.net")
End Sub
Sub TEST_GetData3()
    MsgBox GetData("http://excel.tips.net/junk")
End Sub

اولی باید کار کند. دو مورد دوم باید پیامی را نشان دهند که می گوید "N/A".

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 23 visibility
0 دوستدار 0 امتیاز منفی
1 پاسخ 45 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 43 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 25 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

235 نفر آنلاین
0 عضو و 235 مهمان در سایت حاضرند
بازدید امروز: 21662
بازدید دیروز: 17853
بازدید کل: 20333844
...