5 Messages
Digest #4629
Messages
Tue Oct 16, 2018 11:20 pm (PDT) . Posted by:
"Zainul Ulum" zainul_ulum
Mas Kid,OK deh....saya explore lebih lanjut.
Sekarang sempat terpikir merubah coding saya ke java atau phyton dengan menggunakan object librarinya "selenium".
Saya juga telah buat vba web scrapping di excel dengan reference object library ke selenium basic tetapi belum bisa optimal. Dari beberapa forum yang saya baca, selenium bisa optimal jika menggunakan phyton atau java/javascript.
Karena saya masih suka macro/vba-excel niat migrasi tsb belum terlaksana..
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
-zainul
On Tuesday, 16 October 2018, 8:18:24 AM GMT+7, 'Mr. Kid' mr..nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
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 zainul_ulum@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com> 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' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
hmmm...
kalau begini bisa gak ?
(dicoba dengan sebuah prosedur sederhana ya, apa saja nama prosedurnya)
dim oBrowser as objectset 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 zainul_ulum@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com> 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
#yiv6863716026 #yiv6863716026 -- #yiv6863716026ygrp-mkp {border:1px solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv6863716026 #yiv6863716026ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv6863716026 #yiv6863716026ygrp-mkp #yiv6863716026hd {color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 0;}#yiv6863716026 #yiv6863716026ygrp-mkp #yiv6863716026ads {margin-bottom:10px;}#yiv6863716026 #yiv6863716026ygrp-mkp .yiv6863716026ad {padding:0 0;}#yiv6863716026 #yiv6863716026ygrp-mkp .yiv6863716026ad p {margin:0;}#yiv6863716026 #yiv6863716026ygrp-mkp .yiv6863716026ad a {color:#0000ff;text-decoration:none;}#yiv6863716026 #yiv6863716026ygrp-sponsor #yiv6863716026ygrp-lc {font-family:Arial;}#yiv6863716026 #yiv6863716026ygrp-sponsor #yiv6863716026ygrp-lc #yiv6863716026hd {margin:10px 0px;font-weight:700;font-size:78%;line-height:122%;}#yiv6863716026 #yiv6863716026ygrp-sponsor #yiv6863716026ygrp-lc .yiv6863716026ad {margin-bottom:10px;padding:0 0;}#yiv6863716026 #yiv6863716026actions {font-family:Verdana;font-size:11px;padding:10px 0;}#yiv6863716026 #yiv6863716026activity {background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv6863716026 #yiv6863716026activity span {font-weight:700;}#yiv6863716026 #yiv6863716026activity span:first-child {text-transform:uppercase;}#yiv6863716026 #yiv6863716026activity span a {color:#5085b6;text-decoration:none;}#yiv6863716026 #yiv6863716026activity span span {color:#ff7900;}#yiv6863716026 #yiv6863716026activity span .yiv6863716026underline {text-decoration:underline;}#yiv6863716026 .yiv6863716026attach {clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 0;width:400px;}#yiv6863716026 .yiv6863716026attach div a {text-decoration:none;}#yiv6863716026 .yiv6863716026attach img {border:none;padding-right:5px;}#yiv6863716026 .yiv6863716026attach label {display:block;margin-bottom:5px;}#yiv6863716026 .yiv6863716026attach label a {text-decoration:none;}#yiv6863716026 blockquote {margin:0 0 0 4px;}#yiv6863716026 .yiv6863716026bold {font-family:Arial;font-size:13px;font-weight:700;}#yiv6863716026 .yiv6863716026bold a {text-decoration:none;}#yiv6863716026 dd.yiv6863716026last p a {font-family:Verdana;font-weight:700;}#yiv6863716026 dd.yiv6863716026last p span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv6863716026 dd.yiv6863716026last p span.yiv6863716026yshortcuts {margin-right:0;}#yiv6863716026 div.yiv6863716026attach-table div div a {text-decoration:none;}#yiv6863716026 div.yiv6863716026attach-table {width:400px;}#yiv6863716026 div.yiv6863716026file-title a, #yiv6863716026 div.yiv6863716026file-title a:active, #yiv6863716026 div.yiv6863716026file-title a:hover, #yiv6863716026 div.yiv6863716026file-title a:visited {text-decoration:none;}#yiv6863716026 div.yiv6863716026photo-title a, #yiv6863716026 div.yiv6863716026photo-title a:active, #yiv6863716026 div.yiv6863716026photo-title a:hover, #yiv6863716026 div.yiv6863716026photo-title a:visited {text-decoration:none;}#yiv6863716026 div#yiv6863716026ygrp-mlmsg #yiv6863716026ygrp-msg p a span.yiv6863716026yshortcuts {font-family:Verdana;font-size:10px;font-weight:normal;}#yiv6863716026 .yiv6863716026green {color:#628c2a;}#yiv6863716026 .yiv6863716026MsoNormal {margin:0 0 0 0;}#yiv6863716026 o {font-size:0;}#yiv6863716026 #yiv6863716026photos div {float:left;width:72px;}#yiv6863716026 #yiv6863716026photos div div {border:1px solid #666666;min-height:62px;overflow:hidden;width:62px;}#yiv6863716026 #yiv6863716026photos div label {color:#666666;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv6863716026 #yiv6863716026reco-category {font-size:77%;}#yiv6863716026 #yiv6863716026reco-desc {font-size:77%;}#yiv6863716026 .yiv6863716026replbq {margin:4px;}#yiv6863716026 #yiv6863716026ygrp-actbar div a:first-child {margin-right:2px;padding-right:5px;}#yiv6863716026 #yiv6863716026ygrp-mlmsg {font-size:13px;font-family:Arial, helvetica, clean, sans-serif;}#yiv6863716026 #yiv6863716026ygrp-mlmsg table {font-size:inherit;font:100%;}#yiv6863716026 #yiv6863716026ygrp-mlmsg select, #yiv6863716026 input, #yiv6863716026 textarea {font:99% Arial, Helvetica, clean, sans-serif;}#yiv6863716026 #yiv6863716026ygrp-mlmsg pre, #yiv6863716026 code {font:115% monospace;}#yiv6863716026 #yiv6863716026ygrp-mlmsg * {line-height:1.22em;}#yiv6863716026 #yiv6863716026ygrp-mlmsg #yiv6863716026logo {padding-bottom:10px;}#yiv6863716026 #yiv6863716026ygrp-msg p a {font-family:Verdana;}#yiv6863716026 #yiv6863716026ygrp-msg p#yiv6863716026attach-count span {color:#1E66AE;font-weight:700;}#yiv6863716026 #yiv6863716026ygrp-reco #yiv6863716026reco-head {color:#ff7900;font-weight:700;}#yiv6863716026 #yiv6863716026ygrp-reco {margin-bottom:20px;padding:0px;}#yiv6863716026 #yiv6863716026ygrp-sponsor #yiv6863716026ov li a {font-size:130%;text-decoration:none;}#yiv6863716026 #yiv6863716026ygrp-sponsor #yiv6863716026ov li {font-size:77%;list-style-
Sekarang sempat terpikir merubah coding saya ke java atau phyton dengan menggunakan object librarinya "selenium".
Saya juga telah buat vba web scrapping di excel dengan reference object library ke selenium basic tetapi belum bisa optimal. Dari beberapa forum yang saya baca, selenium bisa optimal jika menggunakan phyton atau java/javascript.
Karena saya masih suka macro/vba-excel niat migrasi tsb belum terlaksana..
#dikirim_pakai_mail.yahoo.com_tanpa_pulsa#
-zainul
On Tuesday, 16 October 2018, 8:18:24 AM GMT+7, 'Mr. Kid' mr..nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
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 zainul_ulum@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com> 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' mr.nmkid@gmail.com [belajar-excel] <belajar-excel@yahoogroups.com> wrote:
hmmm...
kalau begini bisa gak ?
(dicoba dengan sebuah prosedur sederhana ya, apa saja nama prosedurnya)
dim oBrowser as objectset 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 zainul_ulum@yahoo.com [belajar-excel] <belajar-excel@yahoogroups.com> 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.
Kelemahan dari penambahan application.
di bawah, contoh code yang telah saya buat dengan tambahan proses delay (application.
Wassalam,-zainul
'=======
#yiv6863716026 #yiv6863716026 -- #yiv6863716026ygrp-