Ich habe ein Makro, das ich verwenden möchte, um alle unterstrichenen Wörter in einem Word-Dokument herauszuziehen und sie irgendwo zu speichern. Ich habe versucht, zu .txt und .xlsx zu speichern, und es friert beide Zeiten ein.Makro, um unterstrichene Wörter zu finden, friert ein Word
Hier ist mein Code:
Sub addUnderlinedWordsToArray_2()
Dim thisDoc As Word.Document, rngXe As Word.Range
Dim aRange As Range
Dim intRowCount As Integer
Dim myWords() As String
Dim i As Long
Dim bFound As Boolean
i = 0
Application.ScreenUpdating = False
Set thisDoc = ActiveDocument
Set aRange = thisDoc.Content
Set rngXe = aRange.Duplicate
bFound = True
With aRange.Find
' .ClearFormatting
' .ClearAllFuzzyOptions
.Font.Underline = True
.Wrap = wdFindStop
End With
Do While bFound
bFound = aRange.Find.Execute
If bFound Then
Set rngXe = aRange.Words(1)
'aRange.Select
If bFound Then
If Len(aRange) > 1 Then
If Not aRange.InRange(thisDoc.TablesOfContents(1).Range) Then
aRange.MoveEndWhile cset:=Chr(13), Count:=wdBackward
ReDim Preserve myWords(i)
myWords(i) = aRange.Text
i = i + 1
aRange.Collapse wdCollapseEnd
' Debug.Print "Page: " & aRange.Information(wdActiveEndAdjustedPageNumber)
End If
End If
End If
End If
Loop
Set aRange = Nothing
Application.ScreenUpdating = True
MsgBox ("Done!")
End Sub
Ich habe durch sie viel trat, und ich habe nie einen Fehler geworfen bekommen. Es ist funktioniert aber, da ich sehen kann, dass das Array ausgefüllt wird. Mit dem obigen Code wollte ich es zuerst zum Laufen bringen und dann das Array myWords()
in ein anderes Sub weiterleiten, das sie zeilenweise in eine .txt-Datei schreibt.
Volle Enthüllung: Ich bin nicht sicher, ob es Fehler in diesem Code oder nicht gibt, aber ich habe auch darüber in CodeReview gefragt, wie ich dachte, der Code funktioniert, konnte nur optimiert werden. Nachdem ich damit gespielt habe, bin ich nicht sicher, ob der Code tatsächlich funktioniert, also frage ich hier. Ich bin mir nicht sicher, was die Regeln für die doppelte Veröffentlichung sind, also lassen Sie mich bitte wissen, ob dies nicht in Ordnung ist, auch hier zu fragen.
bis zum Anschlag Einfrieren entfernen 'Application.ScreenUpdating = false' so können Sie sehen, was los ist oder was im Dialogfeld besteht – dbmitch
popping Was meinen Sie, wenn Sie„sagen. Ich habe versucht, zu sparen und .txt. xlsx "- wo in deinem Code machst du das? – dbmitch
Zusätzlich zu den oben genannten Vorschlägen sollten Sie diesen Code in einem neuen Dokument mit nur wenigen unterstrichenen Wörtern ausführen, um zu sehen, ob Sie denselben Einfrierfehler erhalten. Dann könnten Sie durch die ganze Sache gehen, um zu sehen, wo der Hang auftritt. –