Ich möchte ein VBA-Skript in Microsoft Word erstellen, um innerhalb einer TXT-Datei zu finden, wenn eine Zeile mit ":" Zeichen vorhanden ist. Wenn das wahr ist, möchte ich diese Zeile bekommen, sie teilen und diese Information in eine Tabelle einfügen, die sich in der Hauptdatei befindet. Um dieses Ziel zu erreichen, möchte ich alle gefundenen Zeilen durchlaufen, um diese Informationen zu erhalten.Mein Word-Makro findet das zweite Wort nicht
Dazu habe ich diesen Code:
Dim arrNames
Dim cont As Integer
cont = 0
strPath = ActiveDocument.name
Documents.Open path & "Mails.txt"
strPath2 = ActiveDocument.name
With Selection.Find
.Text = ":"
Do While .Execute(Forward:=True, Format:=True) = True
Selection.Find.Execute FindText:=(":")
Selection.Expand wdLine
arrNames = Split(Selection.Text, ":")
Documents(strPath).Activate
If cont = 0 Then
Call gestOSINT("Pwd")
Selection.Find.Execute FindText:=("[Pwd]")
ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=1, NumColumns:= _
3, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed
With Selection.Tables(1)
If .Style <> "Tabla con cuadrícula" Then
.Style = "Tabla con cuadrícula"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End With
Set tblNew = Selection.Tables(1)
tblNew.Style = "Tabla de lista 1 clara - Énfasis 1"
Selection.TypeText Text:="Correo electrónico"
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:="Tipo de filtrado"
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:="Plataforma"
End If
Set rowNew = tblNew.Rows.Add
rowNew.Cells(1).Range.Text = arrNames(0)
rowNew.Cells(2).Range.Text = arrNames(1)
rowNew.Cells(3).Range.Text = arrNames(2)
cont = cont + 1
Documents(strPath2).Activate
Selection.Text = arrNames(0) & vbCrLf
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.Collapse wdCollapseEnd
Loop
End With
Documents(strPath2).Activate
ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges
Documents(strPath).Activate
If cont = 0 Then
pwdMails = False
Else
pwdMails = True
End If
Und Mails.txt Datei folgendes enthalten:
[email protected]
[email protected]
[email protected]:word1:word2
[email protected]
[email protected]:word3:word4
Die erste Zeile, die enthalten ":", Zeile 3 in Mails.txt , wurde gefunden, aber die zweite Zeile, Zeile 5 in Mails.txt, wurde nicht gefunden.
Warum passiert das? Wie kann ich es reparieren?
Wenn Sie 'find' mit' Selection' verwenden, immer fügen Sie 'Selection.Collapse wdCollapseEnd' bevor Sie den nächsten Fund ausführen, sonst Word wird nur in der Auswahl suchen, die nun Ihrer eine Zeile besteht ... Auch: Da dies eine Textdatei ist, sollten Sie FileSystemObject verwenden: https://stackoverflow.com/questions/1719342/how-to-read-lines-from-a-text-file-one-by-one- with-power-point-vba-code – LocEngineer