es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copia y pega de VBA+Selenium.

En primer lugar, el sitio web que uso a continuación es solo un ejemplo que tomé. Esto significa que no necesito pegar ningún dato allí, solo estoy probando esto.

Estoy trabajando en un VBA para copiar y pegar una tabla de Excel en un cuadro de texto en un navegador. La tabla es dinámica, por lo que la última fila cambia.

El VBA que escribí es:

Sub Test()

Dim obj As New WebDriver
Dim Keys As New Selenium.Keys
Dim rng As Range

Set rng = Nothing

lr = Range(“K” & Application.Rows.Count).End(xlUp).Row

Set rng = Range(“K9:N” & lr).SpecialCells(xlCellTypeVisible)

obj.Start “chrome”, “”
obj.Get “https://stackoverflow.com/questions/29348045/copy-from-excel-to-browser/”

obj.SetClipBoard [Range(“K9:N” & lr)]
obj.FindElementById(“wmd-input”).SendKeys Keys.Control, “v”

End Sub

Cuando probé este VBA, funcionó bien.

Por otro lado, la tabla contiene título (columna 1), día (columna 2), hora (columna 3) y enlace (columna 4) a algunas de nuestras sesiones. ¿Necesito convertirlo a html para pegar la tabla? Si no, ¿puedo pegarlo como una lista? algo así como:

  • Sesión 1. Día y hora. Enlace: XXX
  • Sesión 2. Día y hora. Enlace: XXX
  • Sesión 3. Día y hora. Enlace: XXX
  • y así sucesivamente.

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como la tabla que está intentando copiar es dinámica, se recomienda convertirla al formato HTML para pegarla en el cuadro de texto del navegador. Esto asegurará que el formato se mantenga y la tabla se muestre correctamente. Puede usar herramientas como HTMLTableConverter para convertir la tabla de Excel al formato HTML.

    Una vez que la tabla se convierte en HTML, puede pegarla en el cuadro de texto del navegador como una lista utilizando VBA. Puede usar el método obj.FindElementById para identificar el cuadro de texto y luego usar el método SendKeys para pegar la tabla HTML como una lista.

    Aquí hay un ejemplo de código para pegar la tabla HTML como una lista:

    Sub Prueba()
    
    Dim obj As New WebDriver
    Dim Keys As New Selenium.Keys
    Dim htmlTable as String
    
    'Convertir tabla de Excel a formato HTML usando HTMLTableConverter
    htmlTable = ConvertirAHTML(Range("K9:N" & lr))
    
    obj.Start "chrome", ""
    obj.Get "https://stackoverflow.com/questions/29348045/copy-from-excel-to-browser/"
    
    obj.FindElementById("wmd-input").SendKeys "Detalles de la sesión:" & vbCrLf & htmlTable
    
    End Sub
    
    Funcion ConvertirAHTML(rng As Range) As String
    Dim htmlTable As String
    Dim i As Long, j As Long
    
    htmlTable = "<ul>" & vbCrLf
    
    'Bucle a través de filas en tabla de Excel
    For i = 1 To rng.Rows.Count
    
      htmlTable = htmlTable & "<li>Sesión " & i & ". " & rng.Cells(i, 1) & ". Día y hora: " & rng.Cells(i, 2) & " " & rng.Cells(i, 3) & ". Enlace: " & rng.Cells(i, 4) & "</li>" & vbCrLf
    
    Next i
    
    htmlTable = htmlTable & "</ul>" & vbCrLf
    
    ConvertirAHTML = htmlTable
    End Function
    

    Este fragmento de código primero convierte la tabla de Excel al formato HTML usando una función personalizada ConvertirAHTML. Luego usa el método SendKeys para pegar la tabla HTML como una lista con viñetas en el cuadro de texto del navegador.

    Tenga en cuenta que la función ConvertirAHTML en el fragmento de código asume que la primera columna en la tabla de Excel contiene el título de la sesión, la segunda columna contiene el día, la tercera columna contiene la hora y la cuarta columna contiene el enlace. Es posible que deba modificar la función en función de su formato de tabla de Excel específico.

Comments are closed.