Texto HTML con etiquetas para texto formateado en una celda de Excel
¿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 ?
Aceptado
Sí, es posible. De hecho, deje que Internet Explorer haga el trabajo sucio por usted.
MIS SUPUESTOS
- Supongo que el texto html está en la celda A1 de la Hoja1. También puedes usar una variable en su lugar.
- 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
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.
- Primero habilite el modo desarrollador en Excel: Enlace
- Seleccione la pestaña Desarrollador > Visual Basic
- Haga clic en Ver > Código
- Pegue el código a continuación actualizando las líneas que requieren que las referencias de celda sean correctas.
- 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