Texto HTML con etiquetas para texto formateado en una celda de Excel

Resuelto Kevin McGovern asked hace 12 años • 7 respuestas

¿Hay alguna manera de tomar HTML e importarlo a Excel para que tenga formato de texto enriquecido (preferiblemente usando VBA)? Básicamente, cuando pego en una celda de Excel, busco convertir esto:

<html><p>This is a test. Will this text be <b>bold</b> or <i>italic</i></p></html>

dentro de esto:

Esto es una prueba. ¿Este texto estará en negrita o cursiva ?

Kevin McGovern avatar Apr 04 '12 02:04 Kevin McGovern
Aceptado

Sí, es posible. De hecho, deje que Internet Explorer haga el trabajo sucio por usted.

MIS SUPUESTOS

  1. Supongo que el texto html está en la celda A1 de la Hoja1. También puedes usar una variable en su lugar.
  2. Si tiene una columna llena de valores html, simplemente coloque el siguiente código en un bucle

CÓDIGO

Sub Sample()
    Dim Ie As Object
    
    Set Ie = CreateObject("InternetExplorer.Application")
    
    With Ie
        .Visible = False
        
        .Navigate "about:blank"
        
        .document.body.InnerHTML = Sheets("Sheet1").Range("A1").Value
        
        .document.body.createtextrange.execCommand "Copy"
        ActiveSheet.Paste Destination:=Sheets("Sheet1").Range("A1")
        
        .Quit
    End With
End Sub

INSTANTÁNEA

ingrese la descripción de la imagen aquí

Siddharth Rout avatar Apr 03 '2012 21:04 Siddharth Rout

Me encontré con el mismo error que BornToCode identificó por primera vez en los comentarios de la solución original. Al no estar familiarizado con Excel y VBA, me tomó un segundo descubrir cómo implementar la solución de tiQU. Así que lo publico como una solución "Para tontos" a continuación.

  1. Primero habilite el modo desarrollador en Excel: Enlace
  2. Seleccione la pestaña Desarrollador > Visual Basic
  3. Haga clic en Ver > Código
  4. Pegue el código a continuación actualizando las líneas que requieren que las referencias de celda sean correctas.
  5. Haga clic en la flecha verde de ejecución o presione F5
Sub Sample()
    Dim Ie As Object
    Set Ie = CreateObject("InternetExplorer.Application")
    With Ie
        .Visible = False
        .Navigate "about:blank"
        .document.body.InnerHTML = Sheets("Sheet1").Range("I2").Value
             'update to the cell that contains HTML you want converted
        .ExecWB 17, 0
             'Select all contents in browser
        .ExecWB 12, 2
             'Copy them
        ActiveSheet.Paste Destination:=Sheets("Sheet1").Range("J2")
             'update to cell you want converted HTML pasted in
        .Quit
    End With
End Sub
hehret avatar Mar 14 '2017 15:03 hehret