VBA-Einfügen von Excel nach Word endet unter
-
23-12-2019 - |
Frage
Das übergeordnete Ziel besteht darin, RTF-formatierten Text in Excel zu übernehmen und ihn in HTML zu konvertieren.Bisher konnte ich Excel nicht dazu bringen, vernünftig zu reagieren, also habe ich es mit Word versucht.Ich kann problemlos in Word konvertieren und möchte daher den Vorgang automatisieren, indem ich die Zelle aus Excel kopiere, sie in Word einfüge und dann Code ausführe, um die Formatierung in die von mir gewünschte Weise zu konvertieren.
Ich stoße auf ein Problem, bei dem beim Einfügen in Word aus Excel VBA das Einfügen erfolgreich ist, aber dann zu springt End Sub
.
Sub webtext(r As String)
Range(r).Copy
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Set wordApp = CreateObject("word.Application")
Set wordDoc = wordApp.Documents.Add
wordApp.Visible = True
wordApp.Activate
wordApp.Selection.PasteSpecial
'Any code here is missed out
z = MsgBox("tada") 'this will never trigger
x=5 'this will never set
With wordDoc
'Operations on the text pasted would happen here
'but vba never gets here.
End With
'Code jumps to here
End Sub
Ich habe versucht, sowohl WordDoc als auch WordApp sowie Paste und PasteSpecial zu verwenden, aber es hat immer das gleiche Ergebnis erzielt.
Hat jemand eine Idee, was hier vor sich geht oder wie man verhindern kann, dass es immer nach dem Einfügen endet?
BEARBEITEN:Ich habe es getestet und es hat unter Office 2010 funktioniert.Es funktioniert nicht unter Office 2013.
Lösung 2
Scheint gelöst zu sein.Der VBA-Debugger kann nicht verstehen, was vor sich geht, nachdem er den WordApp-Abschnitt und damit den Code erreicht hat erscheint um zum Ende des Abschnitts zu springen.
Darüber hinaus scheint es, dass alle Wortänderungen innerhalb der vorgenommen werden sollten With wordDoc
Abschnitt, da es manchmal etwas seltsam sein kann, den Code dazwischen richtig zu treffen (obwohl ich beim ersten Mal nie herausgefunden habe, warum das Meldungsfeld fehlte).
Danke @brettdj für die Hilfe beim Testen und entschuldige mich für meinen Fehler beim Verstehen, was vor sich ging.
Andere Tipps
Bei mir hat es so wie es ist gut funktioniert
Wir empfehlen Ihnen jedoch, diese Optimierungen auszuprobieren, um zu sehen, ob dies funktioniert (AppActivate
ist überflüssig).
Sub StartIt()
Call webtext("a1:a10")
End Sub
hauptsächlich
Sub webtext(r As String)
Range(r).Copy
Dim wordApp As Word.Application
Dim wordDoc As Word.Document
Set wordApp = New Word.Application
Set wordDoc = wordApp.Documents.Add
wordApp.Visible = True
With wordDoc
.ActiveWindow.Selection.Paste
End With
End Sub