2016-03-21 20 views
0

Bir web sitesini (VBA ile) denetlerken ve bir tablodaki seçili öğelerin tümünü silmeye çalışırken, bunların tümünü gerçekten silmek isteyip istemediğimi soran bir Javascript pop-up'ım olsun. (Tamam veya İptal). Bu ortaya çıktığında, vba kodum durur ve bir insan düğmeyi tıklayana kadar başka bir şey yapmayacaktır.VBA'dan Javascript İletisi İletisini Temizle

Bunu biraz araştırdım ve HTML düğmesi için onClick olayının değiştirilmesinin teoride işe yarayacağı anlaşılıyor, ancak henüz çalışmaya devam edemedim. Aşağıda, düğmenin HTML kodu, sonraki Javascript kodu ve ardından VBA kodum var.

HTML Düğme

<p>Delete:&nbsp;<input type="button" name="button_Delete" value="Delete" onclick="doDelete('c');">&nbsp;<span class="note">Deletes all selected charts.</span></p> 
 
                  <p>Move to:&nbsp;<select id="select_Lists" name="select_Lists">

JavaScript, HTML Düğme sonra

<a href="javascript:doDeleteList('169', 'C');">Delete List</a> |

VBA Kod tüm HTML tablosundan seçilen Sil

Dim ieDelete as HTMLInputButtonElement 
SetieDelete = IE.Document.getElementsByName("button_Delte")(0) 
Sleep(500) 
ieDelete.removeAttribute("onClick") 
Sleep(500) 
ieDelete.setAttribute "onClick", "return true;" 
Sleep(500) 
ieDelete.Click 

VBA'yi olduğu gibi çalıştırdığınızda, Javascript ileti kutusunu görüntülemeye devam eder. ieDelete.setAttribute "onClick", "" eklemeye teşebbüs ettim, ancak tüm etkinliği silme işlemini bitirdim, bundan sonra hiçbir şey yapamadım.

Ve ... Kayıt için, başka bir seçeneği açıklayan bir yazı gördüm, ancak senaryoda nasıl kullanılacağını anlayamadım. Respond to Website Message Box by Automating InternetExplorer with VBA

Yardım için şimdiden teşekkür ederiz. ieDelete.Click çağırmadan önce aşağıdaki VBA kodu kullanarak yerleşiğini javascript confirm fonksiyonu üzerine yazın:

cevap

0

Muhtemelen onay iletişim kutusunu kendisi kesmek olabilir

IE.Document.parentWindow.execScript "confirm = function() { return true; }" 

(ieDelete.Click çağrınızda önce takın)

Bu irade Bir onaylama diyaloğu istendiğinde tarayıcının otomatik olarak '' tıkla '' olmasına neden olur.

Not: Bu cevap aşağıdaki varsayar:

+0

Inanılmaz! Harika çalıştı. Bu ileti kutusunun kalıcı olarak devre dışı bırakılmadığını, ancak bunun yerine yalnızca bu çalışma için olduğunu mu sanıyorum? –

+0

Evet. Sadece o run için. Gezinirken veya yenilendiğinde, orijinal işlev geri yüklenir. –

+0

Mükemmel. Yardım için tekrar teşekkür ederim. –