Vb.net: Word-Doc seitenweise durchsuchen nach Textmarke
Hallo,
ich möchte ein Word-Dokument nach einer Textmarke durchsuchen, um die Seitennummer derjenigen Seite zu erfahren, auf dem die Textmarke ist. Google brachte mich zu der (hoffenltich richtigen Erkenntnis, dass Word in Kombination mit vb keinen direkten Rückschluss von einer Textmarke auf deren Position auf Seite X (X ist gefragt) zulässt.
Daher möchte ich jetzt ein Word-Dokument mit Hilfe einer Schleife und eines Zählers seitenweise auf die Existenz der Textmarke durchsuchen.
Zwei Fragen habe ich:
1. Wo finde ich eine vernünftige Anleitung zum Arbeiten mit vb.net und Word?
2. Was muss ich wie an dem folgenden Codeschnipsel ändern, um mein Ziel zu erreichen?
(ich weiß, dass ich "Microsoft.Office.Interop.Word" usw. durch "Import Microsoft.Office.Interop.Word" ersetzen kann. Aktuell hilft mir das beim Verständnisversuch...)
Neugierige Grüße,
Andreas
ich möchte ein Word-Dokument nach einer Textmarke durchsuchen, um die Seitennummer derjenigen Seite zu erfahren, auf dem die Textmarke ist. Google brachte mich zu der (hoffenltich richtigen Erkenntnis, dass Word in Kombination mit vb keinen direkten Rückschluss von einer Textmarke auf deren Position auf Seite X (X ist gefragt) zulässt.
Daher möchte ich jetzt ein Word-Dokument mit Hilfe einer Schleife und eines Zählers seitenweise auf die Existenz der Textmarke durchsuchen.
Zwei Fragen habe ich:
1. Wo finde ich eine vernünftige Anleitung zum Arbeiten mit vb.net und Word?
2. Was muss ich wie an dem folgenden Codeschnipsel ändern, um mein Ziel zu erreichen?
(ich weiß, dass ich "Microsoft.Office.Interop.Word" usw. durch "Import Microsoft.Office.Interop.Word" ersetzen kann. Aktuell hilft mir das beim Verständnisversuch...)
Dim wordApplication As New Microsoft.Office.Interop.Word.Application
Dim wordDocument As Microsoft.Office.Interop.Word.Document = Nothing
Dim strFileName as String = "C:\blabla\document.doc" 'oder "C:\blabla\document.docx"
Dim intAnzahlSeiten As Integer
Dim intCounter As Integer
wordDocument = wordApplication.Documents.Open(filename)
intAnzahlSeiten = wordDocument.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages)
For intCounter = 1 To intAnzahlSeiten
...gehe zu Seite intCounter
...prüfe, ob auf Seite intCounter Textmarke "Kind02" existiert:
If wordDocument.Bookmarks.Exists("Kind02") Then
Dim TextMarkenInhalt As String = wordDocument.Bookmarks().Item("Kind02").Range.Text
Exit For
End If
Next
Neugierige Grüße,
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 332058
Url: https://administrator.de/contentid/332058
Ausgedruckt am: 25.11.2024 um 18:11 Uhr
7 Kommentare
Neuester Kommentar
With wordDocument.Bookmarks
If .Exists("Kind02") Then
msgbox("Position: " & .Item("Kind02").Range.Information(3))
else
msgbox("Marke wurde nicht gefunden!")
End if
End with
Imports Microsoft.Office.Interop.Word
'.....
'..
Dim rngPage As Range
With wordDocument
For i = 1 To .ComputeStatistics(wdStatisticPages)
rngPage = .Selection.GoTo(wdGotoItem.wdGoToPage, wdGotoDirection.wdGoToAbsolute, i)
rngPage.End = .Selection.Bookmarks("\Page").Range.End
If rngPage.Bookmarks.Exists("Demo") Then
MsgBox "Bookmark befindet sich auf Seite: " & i
End If
Next
End with
Einfach erst in VBA entwickeln dann 1:1 in VB.Net umsetzen
Das sind Word-Konstanten, die musst du nur aus dem interop-Assembly referenzieren ... WdGoToItem.wdGoToPage und
Eben, ist ja logisch wenn man nur mal kurz in die Doku schaut. ..