rellenar refrescar pantalla macro internet formulario desde con codigo abrir excel vba excel-vba internet-explorer automation

excel - refrescar - rellenar formulario web desde vba



Automatice IE con VBA-Haga clic en el botón de anclaje con span (2)

El método getElementsByClassName devuelve una colección de elementos con este nombre de clase. Esto se debe a que un DOM HTML puede contener múltiples elementos con el mismo nombre de clase. Es por eso que la forma plural getElement s . Por lo tanto, debe saber qué elemento de la colección de elementos necesita. Si es el primero, entonces:

... Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentaction") oElementCollection(0).Click ...

Si el primero no es el correcto, intente

For i = 0 To oElementCollection.Length - 1 MsgBox oElementCollection(i).innerHTML Next

para encontrar el correcto.

Editar:

Después de sus adiciones en la pregunta:

con

Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext")

probablemente consigas una colección de objetos span , no enlaces. Pero esos elementos de span deben estar dentro de los enlaces. Entonces los enlaces son sus padres.

Asi que

Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext") For Each span In oElementCollection If span.innerHTML = "Attach File" Then span.parentNode.Click Exit For End If Next span

Actualmente realizo la automatización para cargar archivos en saleforce.

El texto HTML es:

<div> <a href="javascript:void(0);" onblur="chatter.getFeed().contentCommentActionBlur(this);" onfocus="chatter.getFeed().contentCommentActionFocus(this);" onclick="chatter.getFeed().createContentComment(this,''0D52700002cc67d'', false, true);" onmousedown="chatter.getFeed().contentCommentActionMouseDown(this);" class="cxcontentcommentaction"> <img class="cxcontentcommentactionimg" src="/s.gif"> <span class="cxcontentcommentactiontext">Attach File</span> </a> </div>

Para hacer clic, el usuario del ancla debe bajar y presionar el botón "Adjuntar archivo".

Lo he intentado con dos diferentes haciendo

1.Coding get element por la clase de ancla = "cxcontentcommentaction":

Set htmldoc = mydoc.getElementsByClassName("cxcontentcommentaction") htmldoc.Click

2.Coding get element por span class = "cxcontentcommentactiontext":

Set htmldoc = mydoc.getElementsByClassName("cxcontentcommentactiontext") htmldoc.Click

Para ambos, recibo el error "El objeto no admite esta propiedad

Después de tu comentario, lo intenté así,

Set oElementCollection = mydoc.getElementsByClassName("cxcontentcommentactiontext") For Each link In oElementCollection If link.innerHTML = "Attach File" Then link.Click Exit For End If Next link

Lo he intentado por debajo de HTML

<a href="javascript:window.invokeOnClickJS_00bG0000000ikPK%28this%29" class="menuButtonMenuLink"> Send an Email</a>

El código siguiente funciona correctamente para html anterior

Set oElementCollection = mydoc.getElementsByClassName("menuButtonMenuLink") For Each link In oElementCollection If link.innerHTML = "Send an Email" Then link.Click Exit For End If Next link

Pero con el botón "Adjuntar archivo" que se menciona en esta pregunta, solo se presenta un problema.


La respuesta de Alex Richter parece ser correcta, también tuve un problema similar. Por lo tanto, si no resolvió su problema, avísenos y también verificaré mi solución.

Aunque recomendaría poner el punto de quiebre directo después de esa línea y observar el resultado ya sea que haya elegido el correcto.

Además, también está permitido editar el código mientras está parado, por lo que puede agregar otra línea para probar. O también puede configurar la siguiente instrucción donde continuar.

Dichos trucos pueden ahorrarle mucho tiempo para solucionar la implementación correcta.

Otra forma de experimentar con esto es utilizar los navegadores integrados en la consola: solo presiona F12 y selecciona la pestaña de la consola.

=> documento
<= HTMLDocument => https://.com/ ......
=> document.getElementsByClassName (''actual-sitio'')
<= HTMLCollection []