Zu groß für einen Kommentar (was es sein sollte, weil dies nicht gut getestet ist und möglicherweise nicht das macht, was Sie möchten).
Wenn AutoFormat nicht genug tut (wie in unseren Unterhaltungen in den Kommentaren), denke ich, dass Sie jeden Hyperlink ziemlich viel tun müssen, dh
- Stellen Sie sicher, dass es von Word als Hyperlink erkannt wurde (in diesem Fall sollten Sie in der Lage sein, einen -Feldcode zu sehen, wenn Sie Alt-F9 verwenden.
- Wenden Sie den Hyperlink-Zeichenstil auf das Ergebnis des HYPERLINK-Felds an
- Wenden Sie die Zeichenformatierung erneut auf das HYPERLINK-Feldergebnis an, um den durch den Hyperlink-Stil verursachten Schaden zu beheben
Wenn der importierte Text eine Reihe von Hyperlinks enthält, ist dies wahrscheinlich sehr langwierig. Daher soll der folgende Teil von VBA Hyperlinks im Hauptteil des derzeit aktiven Word-Dokuments korrigieren.
Es werden nur Dinge erkannt, von denen Word glaubt, dass sie Hyperlinks sind (nicht unbedingt alles, was Sie erwarten).
Ich würde vorschlagen, dass Sie importierte Texte nach Möglichkeit zuerst als separate Dokumente öffnen und dann diesen Code ausführen. Das sollte unerwünschte Nebenwirkungen minimieren.
Der Hyperlink-Zeichenstil besteht darin, dass er die "Standard-Absatzschrift" verwendet, die möglicherweise nicht die gleichen Eigenschaften (z. B. Größe usw.) wie der vorhandene Text aufweist. Selbst wenn Sie den Stil so ändern, dass "Underlying Properties" verwendet wird, ändert sich möglicherweise die Textgröße usw. Was ich hier getan habe, ist, die Eigenschaften des ersten Zeichens im "Anzeigetext" für den Hyperlink zu betrachten und auf den gesamten Anzeigetext anzuwenden, nachdem der Hyperlink-Stil angewendet wurde.
Wenn Sie jedoch Ihre eigenen Absatzformate auf den importierten Text anwenden, ist es wahrscheinlicher, dass Text, der im Hyperlink-Stil gestaltet ist, das tut, was Sie möchten, sodass Sie dieses Stück VBA möglicherweise entfernen können.
Wenn Sie nach Hyperlinks in anderen "Stories" im Dokument suchen müssen, z. B. in Textfeldern, Kopf- / Fußzeilen usw., benötigen Sie auf jeden Fall mehr.
Private Type AutoFormatOptions bAutoFormatApplyBulletedLists As Boolean bAutoFormatApplyFirstIndents As Boolean bAutoFormatApplyHeadings As Boolean bAutoFormatApplyLists As Boolean bAutoFormatApplyOtherParas As Boolean bAutoFormatDeleteAutoSpaces As Boolean bAutoFormatMatchParentheses As Boolean bAutoFormatPlainTextWordMail As Boolean bAutoFormatPreserveStyles As Boolean bAutoFormatReplaceFarEastDashes As Boolean bAutoFormatReplaceFractions As Boolean bAutoFormatReplaceHyperlinks As Boolean bAutoFormatReplaceOrdinals As Boolean bAutoFormatReplacePlainTextEmphasis As Boolean bAutoFormatReplaceQuotes As Boolean bAutoFormatReplaceSymbols As Boolean End Type Sub fixUpHyperlinks() Dim afo As AutoFormatOptions Dim f As Word.Font Dim h As Word.Hyperlink ' Save existing autoformat options With Application.Options afo.bAutoFormatApplyBulletedLists = .AutoFormatApplyBulletedLists afo.bAutoFormatApplyFirstIndents = .AutoFormatApplyFirstIndents afo.bAutoFormatApplyHeadings = .AutoFormatApplyHeadings afo.bAutoFormatApplyLists = .AutoFormatApplyLists afo.bAutoFormatApplyOtherParas = .AutoFormatApplyOtherParas afo.bAutoFormatDeleteAutoSpaces = .AutoFormatDeleteAutoSpaces afo.bAutoFormatMatchParentheses = .AutoFormatMatchParentheses afo.bAutoFormatPlainTextWordMail = .AutoFormatPlainTextWordMail afo.bAutoFormatPreserveStyles = .AutoFormatPreserveStyles afo.bAutoFormatReplaceFarEastDashes = .AutoFormatReplaceFarEastDashes afo.bAutoFormatReplaceFractions = .AutoFormatReplaceFractions afo.bAutoFormatReplaceHyperlinks = .AutoFormatReplaceHyperlinks afo.bAutoFormatReplaceOrdinals = .AutoFormatReplaceOrdinals afo.bAutoFormatReplacePlainTextEmphasis = .AutoFormatReplacePlainTextEmphasis afo.bAutoFormatReplaceQuotes = .AutoFormatReplaceQuotes afo.bAutoFormatReplaceSymbols = .AutoFormatReplaceSymbols End With On Error GoTo cleanup ' set everything the way we want With Application.Options ' all false .AutoFormatApplyBulletedLists = False .AutoFormatApplyFirstIndents = False .AutoFormatApplyHeadings = False .AutoFormatApplyLists = False .AutoFormatApplyOtherParas = False .AutoFormatDeleteAutoSpaces = False .AutoFormatMatchParentheses = False .AutoFormatPlainTextWordMail = False .AutoFormatPreserveStyles = False .AutoFormatReplaceFarEastDashes = False .AutoFormatReplaceFractions = False ' except this one .AutoFormatReplaceHyperlinks = True .AutoFormatReplaceOrdinals = False .AutoFormatReplacePlainTextEmphasis = False .AutoFormatReplaceQuotes = False .AutoFormatReplaceSymbols = False End With With ActiveDocument ' Apply the selected formats .Kind = wdDocumentNotSpecified .Content.AutoFormat ' Now apply the Hyperlink style to all Hyperlink field result ranges For Each h In .Hyperlinks With .Range.Fields(1).Result If .Characters.Count >= 1 Then ' Remove the following line if the Hyperlink style works for you Set f = .Characters(1).Font.Duplicate ' Apply the Hyperlink style .Style = ActiveDocument.Styles(wdStyleHyperlink).NameLocal ' Remove the following 2 lines if the Hyperlink style works for you Set .Font = f set f = Nothing End If End With Next End With cleanup: ' restore the original settings With Application.Options .AutoFormatApplyBulletedLists = afo.bAutoFormatApplyBulletedLists .AutoFormatApplyFirstIndents = afo.bAutoFormatApplyFirstIndents .AutoFormatApplyHeadings = afo.bAutoFormatApplyHeadings .AutoFormatApplyLists = afo.bAutoFormatApplyLists .AutoFormatApplyOtherParas = afo.bAutoFormatApplyOtherParas .AutoFormatDeleteAutoSpaces = afo.bAutoFormatDeleteAutoSpaces .AutoFormatMatchParentheses = afo.bAutoFormatMatchParentheses .AutoFormatPlainTextWordMail = afo.bAutoFormatPlainTextWordMail .AutoFormatPreserveStyles = afo.bAutoFormatPreserveStyles .AutoFormatReplaceFarEastDashes = afo.bAutoFormatReplaceFarEastDashes .AutoFormatReplaceFractions = afo.bAutoFormatReplaceFractions .AutoFormatReplaceHyperlinks = afo.bAutoFormatReplaceHyperlinks .AutoFormatReplaceOrdinals = afo.bAutoFormatReplaceOrdinals .AutoFormatReplacePlainTextEmphasis = afo.bAutoFormatReplacePlainTextEmphasis .AutoFormatReplaceQuotes = afo.bAutoFormatReplaceQuotes .AutoFormatReplaceSymbols = afo.bAutoFormatReplaceSymbols End With ' Application.Options.AutoFormatApplyBulletedLists ' Selection.Document.Kind = wdDocumentNotSpecified ' Selection.Range.AutoFormat End Sub