Comment appeler la fonction JavaScript dans VBA?
J'ai besoin de passer par un IE confirmer " OK " /"Annuler" message pop-up. J'ai un problème d'exécution d'une fonction JavaScript dans mon script VBA. Mon JavaScript:
function ConfirmSave()
{
var Ok = confirm('Are you sure all Documents and Information are attached and correct before saving?');
if(Ok)
return true;
else
return false;
}
function submitbutton_click() {
document.getElementById('FileAttachement2_hdnButtonFlag').value = "SAVE";
var submitbutton = document.getElementById('cmdDownSave');
var uploadobj=document.getElementById('FileAttachement2_Uploader1');
if(!window.filesuploaded)
{
if (!ConfirmSave()) return false;
if(uploadobj.getqueuecount()>0)
{
uploadobj.startupload();
}
else
{
//var uploadedcount=parseInt(submitbutton.getAttribute("itemcount"))||0;
//if(uploadedcount>0)
//{
return true;
//}
//alert("Please browse files for upload");
}
return false;
}
window.filesuploaded=false;
return true;
}
Dans les processus manuels, lorsque je clique sur le bouton enregistrer, la page pop-up de confirmation de la boîte de message, et ma macro s'arrête en cours d'exécution lorsque le pop-up s'affiche, sauf si il a été cliqué.
Voici le code que j'ai essayé de cliquer sur le bouton enregistrer,
Set ElementNameV = HTMLDoc.getElementsByName("cmdsave")
ElementNameV(0).click
J'ai aussi essayé d'utiliser removeattribute
et setattribute
avec laquelle le message pop-up a disparu mais il n'est pas en mesure de télécharger le fichier parce que j'ai besoin d'appuyer sur la touche 'OK' dans la zone confirmer le message qui apparaît lorsque vous cliquez sur le bouton enregistrer pour commencer le téléchargement du fichier.
ElementNameV(0).removeAttribute ("onclick")
ElementNameV(0).setAttribute "onclick", "return true"
ElementNameV(0).click
J'ai essayé de lancer la fonction JavaScript à l'aide de script ci-dessous, mais il montre aussi la confirmation de pop-up boîte de message:
Call HTMLDoc.parentWindow.execScript("submitbutton_click()")
- Puis-je vous demander pourquoi vous n'utilisez pas le natif de VBA/VBScript méthodes?
- ce que u veux dire par native VBA méthodes? pouvez-vous partager quelques suggestions sur comment puis-je en mesure de contrôler le pop-up message de confirmation lorsqu'il apparaît? parce que mes codes d'arrêter de courir lorsque je clique sur le bouton enregistrer et le pop-up s'affiche
- Jetez un oeil à cette page... c'est un VBScript OK/Annuler de la boîte de message: stackoverflow.com/questions/3062401/... voir la réponse sélectionnée dans la partie supérieure.
- Cela peut ou peut ne pas être utile en fonction de ce que vous faites.
- ce n'est pas ce que je recherche, je n'ai pas besoin de créer un message pop-up. ce dont j'ai besoin est de gérer les messages pop-up qui apparaît quand mon je clique sur le bouton enregistrer à partir d'une page web.
- Hmm... Alors je m'en excuse. Je suppose que je ne suis pas vraiment comprendre la question. Cette partie ici "Dans le manuel de processus, lorsque je clique sur le bouton enregistrer, la page pop-up de confirmation de la boîte de message, et ma macro s'arrête en cours d'exécution lorsque le pop-up s'affiche, sauf si il a été cliqué." C'est par la conception. Vous essayez de l'éviter?
- J'ai essayé d'éviter les pop-up en utilisant le removeattribute et setattribute. le pop-up est parti, mais le problème est que le fichier n'est pas le téléchargement qui est parce que j'ai besoin de cliquez sur " OK " dans la fenêtre pop-up pour commencer à télécharger le fichier. Je ne pense pas que d'éviter les pop-up message de confirmation va vous aider. Je pense que j'ai besoin de le contrôler quand il apparaît. mais le problème est que ma macro arrêter de travailler quand il apparaît. Je pense que j'ai besoin d'utiliser les Événements, mais Im peur que je ne sais pas comment.
- Ok, eh bien, j'espère que quelqu'un d'autre le fera carillon.
Vous devez vous connecter pour publier un commentaire.
Vous devriez être en mesure de remplacer le
ConfirmSave
fonction avec celle qui renvoie simplement vrai:ou
ou même
Exécuter avant de cliquer sur le bouton.
Testé et fonctionne dans IE11
Donc, j'ai lu votre question, un peu de temps maintenant et je pense que pour réaliser ce que vous voulez faire, vous allez devoir totalement changer votre approche du problème. Vous avez besoin de lire sur Javascript Concurency, Javascript Web de Travailleurs, et le Javascript de la Boucle d'Événements.
De simplement jeter ces termes dans Google et vous trouverez beaucoup de grandes ressources pour apprendre à ce sujet.
Par défaut Javascript est un seul thread langue et il s'arrête en attendant que les événements de compléter leurs activités. Ce que vous semblez être à la recherche de base sur la façon dont je suis en train de lire votre question est une façon pour votre Javascript pour maintenir l'exécution des actions pendant une invite utilisateur est affichée.
Alors que ce n'est pas une approbation, je vais jeter cette un lien pour obtenir vous avez commencé.