2011-03-16 5 views
8

J'ai une feuille Excel avec des cellules contenant du HTML. Comment puis-je les convertir par lots en texte clair? En ce moment, il y a tellement de tags et de styles inutiles. Je veux l'écrire à partir de zéro, mais ce sera beaucoup plus facile si je peux obtenir le texte brut. Je peux écrire un script pour convertir html en texte brut en PHP, donc si vous ne pouvez pas penser à une solution dans VBA alors peut-être que vous pouvez suggérer comment je pourrais transmettre les données de cellules à un site Web et récupérer les données.Convertir html en texte brut en VBA

Répondre

14

Définissez une référence à "Bibliothèque d'objets Microsoft HTML".

Function HtmlToText(sHTML) As String 
    Dim oDoc As HTMLDocument 
    Set oDoc = New HTMLDocument 
    oDoc.body.innerHTML = sHTML 
    HtmlToText = oDoc.body.innerText 
End Function 

Tim

+0

Cela fonctionne bien, mais sachez que les espaces blancs sont réduits. Par exemple '

this[space][space][space]is
a[space]test
' sort comme 'ce [espace] isa [espace] test'. (désolé pour le formatage, les espaces supplémentaires ne sortent pas quand je les tape.) –

+0

Réduire les espaces serait "comportement attendu" ici je pense (sauf si le texte de l'élément a été stylé en utilisant css pour préserver les espaces) –

4

Un moyen très simple d'extraire du texte consiste à balayer le caractère HTML par caractère et à accumuler des caractères en dehors des chevrons dans une nouvelle chaîne. Cela peut laisser beaucoup d'espaces inutiles, mais cela aidera à supprimer les balises.

3

solution de Tim était grande, a travaillé aimé un charme.

Id aiment contribuer: Utilisez ce code pour ajouter la "bibliothèque d'objets Microsoft HTML" dans l'exécution:

Set ID = ThisWorkbook.VBProject.References 
ID.AddFromGuid "{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}", 2, 5 

Il a travaillé sur Windows XP et Windows 7.

0

La réponse de Tim est excellent . Cependant, un ajustement mineur peut être ajouté pour éviter une réponse d'erreur prévisible.

Function HtmlToText(sHTML) As String 
     Dim oDoc As HTMLDocument 

     If IsNull(sHTML) Then 
     HtmlToText = "" 
     Exit Function 
     End-If 

     Set oDoc = New HTMLDocument 
     oDoc.body.innerHTML = sHTML 
     HtmlToText = oDoc.body.innerText 
    End Function 
Questions connexes