mas Zainul, Mungkin nama properti (attribut) nya yang berbeda. Contohnya, object Label memiliki properti Caption (bersifat read/write) tapi tidak memiliki properti Text atau Value (keduanya juga bersifat read/write) Sedangkan object TextBox memiliki properti Text atau Value tapi tidak memiliki properti Caption (ketiganya bersifat read/write). Object Range juga tidak memiliki properti Caption, tapi memiliki properti Value (bersifat read/write) dan Text (bersifat read only).
Sifat read/write -> programmer bisa melakukan get (ambil nilai alias read) dan set (tulis nilai alias write). Sifat read only -> programmer hanya bisa ambil nilai (alias read) saja. Term read/write tersebut di atas adalah untuk design dasar si object (bawaan dari sononya) Jadi berbeda hal dengan konteks sebuah textbox yang bisa di-input oleh user, tapi juga bisa di-lock agar user tidak bisa mengubah nilai. Maksudnya, jangan sampai dikiranya bahwa properti Text milik textbox bisa bersifat read/write maupun read only. Properti Text milik Textbox itu sifat bawaannya hanyalah Read/Write, walau diset bagi user tidak bisa mengubah isinya. Regards, Kid On Mon, Oct 15, 2018 at 5:27 AM Zainul Ulum [email protected] [belajar-excel] <[email protected]> wrote: > > > Mas Kid, > Terimakasih masukannya akan saya coba dan hasilnya akan share di milis. > > tanya lagi: > -- apakah memang ada beberapa element html di browser yang tidak dikenali > oleh internet explorer? saya coba oHTML_Element = > oHTMLDoc.getElementById(sElemenID), object ketemu, tetapi tidak bisa diset > atau diganti atribute atau propertinya. > > Thanks, > -zainu > > > On Sunday, 14 October 2018, 12:53:32 AM GMT+7, 'Mr. Kid' > [email protected] [belajar-excel] <[email protected]> wrote: > > > > > 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 > > >

