todas texto tablas pasar para online las internet insertar importar gratis formato etiquetas etiqueta ejemplos datos convertir convertidor como color chrome atributos archivo excel vba excel-vba html-parsing

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



tablas en html ejemplos (6)

Me encontré con el mismo error que BornToCode identificado por primera vez en los comentarios de la solución original. Como no estaba familiarizado con Excel y VBA, tardé un segundo en descubrir cómo implementar la solución de tiQU. Así que lo estoy publicando como una solución "For Dummies" a continuación

  1. Primero habilite el modo desarrollador en Excel: Link
  2. Seleccione la pestaña Desarrollador> Visual Basic
  3. Haga clic en Ver> Código
  4. Pegue el código siguiente para actualizar las líneas que requieren referencias de celda para que 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

¿Hay alguna manera de tomar HTML e importarlo a Excel para que se formatee como texto enriquecido (preferiblemente mediante el uso de VBA)? Básicamente, cuando pego en una celda de Excel, estoy buscando 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 será negrita o cursiva?


Puede copiar el código HTML al portapapeles y pegarlo de nuevo como texto Unicode. Excel representará el HTML en la celda. Echa un vistazo a esta publicación http://www.dailydoseofexcel.com/archives/2005/02/23/html-in-cells-ii/

El código de macro relevante de la publicación:

Private Sub Worksheet_Change(ByVal Target As Range) Dim objData As DataObject Dim sHTML As String Dim sSelAdd As String Application.EnableEvents = False If Target.Cells.Count = 1 Then If LCase(Left(Target.Text, 6)) = "<html>" Then Set objData = New DataObject sHTML = Target.Text objData.SetText sHTML objData.PutInClipboard sSelAdd = Selection.Address Target.Select Me.PasteSpecial "Unicode Text" Me.Range(sSelAdd).Select End If End If Application.EnableEvents = True End Sub


Sé que este hilo es antiguo, pero después de asignar el innerHTML, ExecWB funcionó para mí:

.ExecWB 17, 0 ''Select all contents in browser .ExecWB 12, 2 ''Copy them

Y luego simplemente pegue los contenidos en Excel. Dado que estos métodos son propensos a errores de tiempo de ejecución, pero funcionan bien después de uno o dos intentos en modo de depuración, es posible que tenga que decirle a Excel que intente de nuevo si se produce un error. Lo resolví agregando este manejador de errores al sub, y funciona bien:

Sub ApplyHTML() On Error GoTo ErrorHandler ... Exit Sub ErrorHandler: Resume ''I.e. re-run the line of code that caused the error Exit Sub End Sub


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

TRATADO Y PROBADO

MIS SUPUESTOS

  1. Supongo que el texto html está en la celda A1 de Sheet1. 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

HTH

Sid


Si el ejemplo de IE no funciona, usa este. De todos modos, esto debería ser más rápido que iniciar una instancia de IE.

Aquí hay una solución completa basada en
http://www.dailydoseofexcel.com/archives/2005/02/23/html-in-cells-ii/

Tenga en cuenta que si su innerHTML es de todos los números, por ejemplo, ''12345'', el formato HTML no funcionará completamente en Excel ya que trata el número de manera diferente. pero agrega un carácter, por ejemplo, un espacio al final, por ejemplo. 12345 + "& nbsp;" formatos bien.

Sub test() Cells(1, 1).Value = "<HTML>1<font color=blue>a</font>" & _ "23<font color=red>4</font></HTML>" Dim rng As Range Set rng = ActiveSheet.Cells(1, 1) Worksheet_Change rng, ActiveSheet End Sub Private Sub Worksheet_Change(ByVal Target As Range, ByVal sht As Worksheet) Dim objData As DataObject '' Set a reference to MS Forms 2.0 Dim sHTML As String Dim sSelAdd As String Application.EnableEvents = False If Target.Cells.Count = 1 Then Set objData = New DataObject sHTML = Target.Text objData.SetText sHTML objData.PutInClipboard Target.Select sht.PasteSpecial Format:="Unicode Text" End If Application.EnableEvents = True End Sub


Todos ustedes tienen soluciones válidas, y con un puñado de ellas puede implementar exactamente esto.

Las herramientas que necesitan son expresiones regulares, linq, un motor de búsqueda, vb.net o C # e Internet.

Busque "tabla html para conjunto de datos". A continuación, busque "conjunto de datos para sobresalir sin Excel instalado".

Creo que con esos términos podrías juntarlo. ;)

Pero aquí hay algo de la solución.

Using sr As StreamReader = New StreamReader(fileName, Encoding.UTF8) result = sr.ReadToEnd() End Using result = result.Substring(result.IndexOf("<tab")) Dim sb As New StringBuilder sb.AppendLine("<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"" ""http://www.w3.org/TR/html4/loose.dtd"">") sb.AppendLine("<html>") sb.AppendLine("<head>") sb.AppendLine("<meta http-equiv=""Content-Type"" content=""text/html; charset=iso-8859-1" > "") sb.AppendLine("<title>Title</title>") sb.AppendLine("</head>") sb.AppendLine("<body>") sb.Append(result) sb.AppendLine("</body>") sb.AppendLine("</html>") result = sb.ToString() File.Move(fileName, System.IO.Path.GetFileNameWithoutExtension(fileName) + ".txt") Dim ds As DataSet = GetTableAsDataSet.ConvertHTMLTablesToDataSet(result) If (DataSetToExcel.WriteXLSFile(fileName, ds) = True) Then

http://www.dotnetfunda.com/articles/show/51/convert-html-tables-to-a-dataset

http://www.codeproject.com/Tips/313731/How-to-convert-DataSet-to-Excel-workbook-xls-using

En aras de la simplicidad, mi archivo de entrada es una tabla html que se correlaciona con Excel para dar la vista correcta. Pero una vista es todo lo que es. así que lo leí en striptease de la basura de metaestilo y lo envolví en html válido, lo introduje para obtener el conjunto de datos y escribir los datos establecidos. disfrutar.

Creo que la expresión regular podría ayudarte a reunir la otra parte del html ...

<table[^>]*>(.*?)</table> == <html[^>]*>(.*?)</html>

Los créditos van a los autores de dicho código. Solo lo armé.