hmmm...
kalau begini bisa gak ?
(dicoba dengan sebuah prosedur sederhana ya, apa saja nama prosedurnya)
dim oBrowser as object
set obrowser=createobject("Internetexplorer.Application")
with obrowser
.visible=true
.navigate "alamat webpage"
do while .readystate<>4 or .busy
'proses cek timeout bisa dilakukan disini
loop
msgbox "Browser sudah siap.",vbinformation
end with
Contoh kalau mau pakai timeout, lalu batalkan (tutup browser-nya sekalian)
dim oBrowser as object ,dblTimer as double, dblTimeOut as double
dbltimeout=1 'misal timeout 1 detik (buat nyoba saja)
set obrowser=createobject("Internetexplorer.Application")
with obrowser
.visible=true
.navigate "alamat webpage"
dbltimer=timer
do while .readystate<>4 or .busy
'proses cek timeout bisa dilakukan disini
if timer-dbltimer>dbltimeout then
.quit
msgbox "Timeout",vbexclamation
exit sub
endif
loop
msgbox "Browser sudah siap.",vbinformation
end with
Regards,
Kid
On Mon, Oct 8, 2018 at 11:59 AM Zainul Ulum [email protected]
[belajar-excel] <[email protected]> wrote:
>
>
> Rekan Be-Excel,
> saya membuat coding sederhana di vba-excel untuk otomasi pengisian form di
> internet explorer dengan menggunakan object library/reference: microsoft
> interner control.
>
> Salah satu kendalanya adalah untuk memastikan bahwa object/ internet
> element dalam form di internet explorer adalah siap (ready) untuk diisi
> dari data yang saya ambil dari spead sheet excel.
>
> Berdasarkan online help yang saya baca, untuk mengecek bahwa object sudah
> terunduh sempurna adalah dengan menggunakan nilai property readystate.
> Jika nilai readystate bernilai = 4 , maka object di internet explorer sudah
> ter-loaded dan siap untuk diisi sedangkan untuk menunggu readystate=4
> dilakukan looping sampai didapat nilai property=4 (ready).
>
> Akan tetapi dalam implementasinya, terutama jika internet connectionnya
> jelek, saat menggunakan looping (do....loop atau while....wend) ternyata
> object belum siap atau belum ready. Untuk memaksa object menjadi ready,
> saya menambahkan tambahan waktu tunggu / waktu looping Application.Wait
> dengan tambahan nilai tunggu 1 detik ( sDelay = Format(TimeValue(sDelay)
> + TimeValue("00:00:" & Format(i, "00")), "hh:mm:ss")) , sampai object
> benar-benar siap.
>
> Kelemahan dari penambahan application.wait tersebut adalah proses
> pengisian form akan lama karena tiap loop ditambahkan waktu. tunggu.
>
> di bawah, contoh code yang telah saya buat dengan tambahan proses delay
> (application.wat).
> Mohon bantuan atau masukan dari teman-teman yang pengalaman di "web
> scrapping"
>
> Wassalam,
> -zainul
>
> '==========================================================================
> Private Function SetAttributeWithDelay(objBrowser As InternetExplorer,
> ByVal sDelay As String, _
> ByVal sElemenID As String, ByVal sAttrKey As String, ByVal vValue As
> Variant) As Boolean
>
> Dim oHTMLDoc As HTMLDocument
> Dim oHTML_Element As Object
> Dim i As Integer
> Dim bol As Boolean
> SetAttributeWithDelay = True
> i = -1
> Do
> i = i + 1
> sDelay = Format(TimeValue(sDelay) + TimeValue("00:00:" & Format(i,
> "00")), "hh:mm:ss")
> Do ' Wait till the Browser is loaded
> Application.Wait (Now + TimeValue(sDelay)) '--->NOTE: dicoba
> pakai ini berhasil tetapi proses lama
> Loop Until objBrowser.readyState = 4 'READYSTATE_COMPLETE
>
> 'While objBrowser.readyState <> 4 Or objBrowser.Busy: DoEvents:
> Wend--->note: dicoba pakai ini tidak berhasil
> Set oHTMLDoc = objBrowser.document
> On Error Resume Next
> Set oHTML_Element = oHTMLDoc.getElementById(sElemenID)
> If Err.Number Then
> Err.Clear
> 'Application.Wait (Now + TimeValue(sDelay))'--->
> note:dicoba pakai ini tidak berhasil
> 'oHTML_Element = oHTMLDoc.getElementById(sElemenID)
> End If
> If i = 10 Then
> SetAttributeWithDelay = False
> Exit Function
> End If
> Loop Until Not oHTML_Element Is Nothing
> Call oHTML_Element.setAttribute(sAttrKey, vValue)
> End Function
>
>