Ö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

Etiketler : VB.Net VBA
Kategoriler : VB.Net VBA
Yorumlar : 1 Yorum Yorum Yaz

Yorumlar

İSMAİL CAN 9/27/2009 12:56 PM
Hazırladığınız sistem çok ama ben anlamakta biraz zorlandım. Biraz daha basit seviyeden konuyu tekrar izah edebilirmisiniz. Ben bunu uygulamak istiyorum. Nasıl Çalıştıracağım konusunda yardım ederseniz çok memnun olurum? Çok TEŞEKKÜRLER...

Yorum Yaz

Adınız: *
E-Mail Adresiniz: *
Web Sitesi:
Yorum: *
Güvenlik Kodu: *
 
Arama
  Ara
Takvim
<September 2010>
SMTWTFS
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789
Tag Bulutu