2016-07-06 10 views
0

Ich habe ein Stück VBA-Code in Excel, Zellen wo HTML-Text geschrieben wird, nimmt HTML in IE, und fügt es als formatierten Text ohne HTML-Tags in der Zelle . Ich wählte den Code hier: HTML Text with tags to formatted text in an Excel cellNavigieren auf leere Seite im IE mit Excel

Im Gegensatz zu dieser Frage, die ich verknüpfte, muss ich dies für eine Menge von Zellen tun, also möchte ich ein wenig beschleunigen. Da CreateObject("InternetExplorer.Application") eine lange Zeit dauert, um zu verarbeiten, versuche ich, das gleiche Objekt mehrmals zu verwenden, aber es schlägt auf der Linie .Navigate "about:blank" das zweite Mal, dass es dazu kommt. Hier

ist der Code:

Sub ConvertHTMLrecu() 
    Dim Ie As Object 
    Dim rng As Range, rng2 As Range 
    Dim i As Integer 
    Dim iChr As Integer 

    i = 1 
    Set Ie = CreateObject("InternetExplorer.Application") 

    For i = 1 To 40 
     Set rng = Feuil3.Range("A" & i) 
     Set rng2 = Feuil3.Range("C" & i) 

     With Ie 
      .Visible = False 

      .Navigate "about:blank" 

      .Document.body.InnerHTML = rng.Value 

      .ExecWB 17, 0 
      .ExecWB 12, 2 

      ActiveSheet.Paste Destination:=rng2 

      .Quit 
     End With 
    Next i 

End Sub 

Was ich brauche

Ich würde eine von zwei Dinge mögen. Entweder finde ich einen Weg, um wieder zu einer leeren Seite zu gelangen, damit ich das Makro ein zweites Mal ausführen kann, ohne das Objekt zurücksetzen zu müssen ODER einen besseren Weg zum Formatieren von HTML-Text in Excel zu finden (da dies alles ist, was dieser Makro macht).

Antwort

2

Sie beenden Ie Objekt in der ersten Schleife und versuchen, in der zweiten Schleife darauf zuzugreifen, daher Fehler erhalten.

Entfernen Sie einfach .quit von Schleife und Platz unterhalb Linien in der letzten Zeile kurz vor End Sub:

Ie.quit 
Set Ie = Nothing 
+0

Ihre Antwort war gut, aber ich würde immer noch sagen, dass es nicht gut funktioniert überhaupt in einer Schleife. Es wirft intermittierende Fehler und hat gemischte Ergebnisse, die von Ausführung zu Ausführung variieren. Der Ersteller des Makros (verlinkt) hatte gewarnt, dass die Methode anfällig für Laufzeitfehler war ... –

+0

Nun, ich habe es mit einigen Dummy-Daten versucht und es hat gut funktioniert. Auch meine Antwort bezieht sich nur auf deine Frage. Wenn Sie einige Testdaten hinzufügen können, kann ich einen Blick darauf werfen. – ManishChristian

+0

Ich habe es geschafft, es richtig zu arbeiten, aber es dauert etwa 1/3 Sekunde pro Zelle, die konvertiert werden muss. Ihre Antwort ist großartig, nur die Ausführungsgeschwindigkeit ist schlecht. –