Örneğimiz bir klasördeki word belgeleri içinde istediğimiz bir kelimeyi aratıp o kelime bulunduğunda belgeyi açarak bulunduğu yeri işaretliyor. Örneğimizi referans kullanma yöntemi ile yaptım. Dolayısı ile Project menüsünden Add Reference seçeneği ile gelen pencereden COM başlığı altından Microsoft Word 11.0 Object Library seçeneği seçip OK tuşuna basıyoruz.
Daha sonra formumuza bir adet drivelist nesnesi, bir adet dirlist kontrolü, bir adet filelist kontrolü, iki adet de komut butonu ekleyelim. Ekran tasarımı şu şekilde olacak:

Kod ise şu şekilde:
Public Class Form1
Private Sub cmdiptal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdiptal.Click
End
End Sub
Private Sub DirListBox1_Change(ByVal sender As Object, ByVal e As System.EventArgs) Handles DirListBox1.Change
FileListBox1.Path = DirListBox1.Path
End Sub
Private Sub DriveListBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DriveListBox1.SelectedIndexChanged
DirListBox1.Path = DriveListBox1.Drive
End Sub
Private Sub cmdtamam_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdtamam.Click
Try
Dim aranan, belge
Dim WordApp As Microsoft.Office.Interop.Word.Application 'word uygulamasını tanımlıyoruz
Dim WordDoc As Microsoft.Office.Interop.Word.Document 'word belgesini tanımlıyoruz
aranan = InputBox("Aranan metni giriniz", "Arama")
If aranan = "" Then Exit Sub
Me.Hide()
WordApp = CreateObject("Word.Application") 'Word uygulamasını oluşturuyoruz
WordApp.Visible = True 'word belgesini görünür yapıyoruz
belge = Dir(FileListBox1.Path & "\*.doc") 'seçilen klasördeki word belgelerini aratıyoruz
While belge <> ""
'Klasördeki word belgelerini sırayla açıyoruz
WordDoc = WordApp.Documents.Open(FileListBox1.Path & "\" & belge)
WordApp.Selection.HomeKey(Unit:=6) 'Belgemizi sonuna kadar seçiyoruz
'Daha önceden tanımlanmış olan bulma parametrelerini temizliyoruz
WordApp.Selection.Find.ClearFormatting()
With WordApp.Selection.Find
'Bulma parametrelerini tanımlıyoruz
.Text = aranan
.Forward = True
.Wrap = 0
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
'Bulma işlemini başlatıyoruz
WordApp.Selection.Find.Execute()
If WordApp.Selection.Find.Found = True Then
Exit Sub
End If
belge = Dir()
'Eğer bulunamadı ise belgeyi kapatıyoruz
If WordApp.Selection.Find.Found = False Then
WordDoc.Close() 'Word belgesini kapatıyoruz
End If
End While
If WordApp.Selection.Find.Found = False Then
WordDoc.Close() 'word belgesini kapatıyoruz
MsgBox("Aranan metin bulunamadı")
End If
WordApp.Quit() 'Word uygulamasını kapatıyoruz
WordDoc = Nothing 'Word belgesini bellekten siliyoruz
WordApp = Nothing 'Word uygulamasını bellekten siliyoruz
Catch
MsgBox("Aranan yazı veya dosya bulunamadı")
Exit Sub
End Try
End Sub
End Class
selection.HomeKey(Unit:=6, Extend:=0) ifadesi seçimi belgenin başına taşımak ya da genişletmek için kullanılır ve kullanımı şu şekildedir:
ifade.HomeKey(Unit, Extend)
Şu değerler bu ifade içerisinde kullanılabilir.
Eğer Extend yerine wdExtend ya da 1 yazılırsa seçim genişletilir, wdMove ya da 0 yazılırsa seçim taşınır.
Unit ise üzerinde işlem yapılacak birimi belirler ve şu değerleri alabilir:
wdUnits tipleri
Sabit Değer
wdCell 12
wdCharacter 1
wdCharacterFormatting 13
wdColumn 9
wdItem 16
wdLine 5
wdParagraph 4
wdParagraphFormatting 14
wdRow 10
wdScreen 7
wdSection 8
wdSentence 3
wdStory 6
wdTable 15
wdWindow 11
wdWord 2
Biz örneğimizde wdStory ya da 6 rakamını kullandık
WdFindWrap işlemi ise aranan metin bulunamazsa ne yapılacağını belirler
WdFind tipleri
SAbit Value Anlamı
wdFindAsk 2 Aramaya devam edilip edilmeyeceği kullanıcıya sorulur.
wdFindContinue 1 Aramaya belgenin başından veya sonundan devam edilir.
wdFindStop 0 Arama işlemi bitirilir.
Son olarak proje dosyasının linkini vereyim:
http://www.volkanaktas.com/PrgDosya/vba/wordarama.rar