Range nesnesin parametresiz vererek tüm içeriğe erişmiş oluyoruz.
Şimdi toplam sayfa sayısını bulalım.
Dim pages As Integer = rng.ComputeStatistics(Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages)
Bütün sayfaların başlangıç-bitiş değerlerini bir Dictionary nesnesinde tutalım
Dim list As New System.Collections.Generic.Dictionary(Of Integer, Integer())
İlk sayfanın başına gidelim ve en son Range değerini tutalım.
Dim what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToPage
Dim which = Microsoft.Office.Interop.Word.WdGoToDirection.wdGoToAbsolute
Dim nRange As Microsoft.Office.Interop.Word.Range
Dim last As Integer = rng.End
Şimdi 2. sayfadan son sayfaya kadar ilerliyelim.
Dim oncekiSon As Integer = 0
For i = 2 To pages
nRange = rng.GoTo(what, which, i)
list.Add(i - 1, New Integer() {oncekiSon, nRange.End})
oncekiSon = nRange.End
Next
Şimdi son sayfanın başlangıç ve bitişlerini ekliyelim.(Son Range değeri)
If list.Count > 0 Then
list.Add(list.Keys.Last + 1, New Integer() {oncekiSon, last})
End If
Artık elimizdde bütün sayflar için Range(Başlangıç-Bitiş) değerleri mevcut.
Sayfaların içerikleri işleyebiliriz.
For Each key As Integer In list.Keys
rng.SetRange(list(key)(0), list(key)(1))
Dim data As String = rng.Text 'key nolu sayfanın içeriği
Next
Word dan çıkalım.
COM nesnelerimizi bırakmayı unutmayalım :)
_WORD.Quit(SaveChanges:=Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges)
System.Runtime.InteropServices.Marshal.ReleaseComObject(_WORD)
System.Runtime.InteropServices.Marshal.ReleaseComObject(_Doc)
_WORD = Nothing
_Doc = Nothing