Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Microsoft Visual Basic, Visual Basic .NET ve VBA
Bu bölümde İnşaAllah bir yazı dizisi halinde Visual Basic ve Visual Basic .Net ile VBA kullanımını başlangıçtan ileri seviyelere kadar sürdürmeye çalışacağım.

VBA (Visual Basic for Application) ofis uygulamalarını geliştirebilmek ve özelleştirebilmek için kullanılan bir ortak dildir. Bu sayede kullanıcılar VBA’ya destek veren ofis ürünleri (Word, Excel, Powerpoint,Access gibi), Microsoft Messenger, Autocad gibi bir çok programı özelleştirebilir ya da geliştirebilir. Ben bu bölümde bu programların içerisinden program yazmak yerine Visual Basic içerisinden program yazma yöntemini izleyeceğim.

Visual Basic, Visual Basic .Net veya diğer .NET ailesi ile VBA(Visual Basic for Application) ile program yazmanın başlıca üç metodu vardır.

Birinci yöntemde referans tanımlama yöntemi kullanılır. Bu yöntemde yazılan programlar versiyon bağımlı olacaktır. Dolayısıyla ofis 2000 için yazılan bir program ofis 2003 için çalışmayacaktır.
İkinci yöntemde ise referans kullanmaya gerek yoktur. Dolayısıyla programlarımız versiyon bağımsız olarak çalışacaktır.
3. yöntem ise yalnızca .NET ailesi ile kullanılan VTSO (Visual Studio Tools For Office ) isimli hazır bir ofis yazılımı geliştirme ortamıdır.

Giriş olarak her üç yöntemle de basitçe bir word uygulaması yapalım.
Öncelikle 1. yöntem olan referans tanımlama yöntemi kullanalım. Bu işlemi Visual Basic 6.0 ile nasıl yaparız. Project menüsünden References seçeneğini tıklayalım. Gelen pencereden kullandığımız ofis sürümüne uygun olarak Microsoft Word 11.0 Object Library seçeneğini seçip OK tuşuna basıyoruz. Daha sonra formumuzun kod penceresine şu kodları ekliyoruz:

Private Sub Form_Load()
Dim WordApp As Word.Application ‘word uygulaması
Dim WordDoc As Document ‘word belgesi
Set WordApp = CreateObject("Word.Application") ‘word nesnesi oluşturuyoruz
WordApp.Visible = True ‘word uygulamamızı görünür yapıyoruz
Set WordDoc = Documents.Add ’Yeni belge oluşturuyoruz
End Sub

Bu işlemi Visual Basic .NET ile nasıl yaparız. Bir de ona bakalım.Bir Windows application açıyoruz. Daha sonra 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çilip OK tuşuna basıyoruz. Elbette kullandığınız word programının sürümüne göre buradaki 11 rakamı değişecektir.

Daha sonra form üzerine bir komut butonu ekleyerek text özelliğini ‘yeni belge oluştur’ şeklinde değiştiriyoruz. Formumuzun tanımlama kısmında WordApp ve WordDoc nesnelerimizi tanımlıyoruz. WordApp word uygulaması, WordDoc ise word belgesidir.
Dim WordApp As New Word.Application()
Dim WordDoc As New Word.Document()

Daha sonra komut butonu içerisine şu kodu ekliyoruz;

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
WordApp = CreateObject("Word.Application")
WordDoc = WordApp.Documents.Add
WordApp.Visible = True
End Sub

WordApp = CreateObject("Word.Application") satırıyla word uygulamamızı açıyoruz..

WordDoc = WordApp.Documents.Add satırıyla yeni bir word belgesi oluşturuyoruz.

WordApp.Visible = True satırıyla oluşturduğumuz word belgesini görüntülüyoruz.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Gelelim 2. yöntemimize. Öncelikle yine Visual Basic 6.0 ile başlayalım.

Private Sub Form_Load()
Dim objWord As Object ‘word programı

Set objWord = CreateObject("Word.Application") ‘yeni word uygulaması oluşturuyoruz.

objWord.Documents.Add ‘yeni word belgesi açıyoruz.

objWord.Visible = True ‘word programını görünür hale getiriyoruz.

End Sub

VB. NET de de aynı kod çalışmaktadır.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
3. yöntemimiz olan VSTO (Visual Studio Tools For Offıce ) ise yalnızca .NET altında kullanılabilmektedir.

VSTO kurulumu için öncelikler şunlar gereklidir:

Ofis 2003 service pack1 http://www.microsoft.com/downloads/deta ... laylang=tr adresinden yükleyebilirsiniz.

En az .NET framework 1.1.
http://www.microsoft.com/downloads/deta ... laylang=en adresinden yükleyebilirsiniz.

VSTO yardım dosyalarının kurulabilmesi için MSDN Library

VSTO’nun beta sürümünü ise http://www.microsoft.com/downloads/deta ... layLang=en adresinden yükleyebilirsiniz.

VSTO kurulumundan sonra ofis şablonları otomatik olarak Visual Studio .Net içine eklenir. Visual Studio .Net ortamında New Project dediğiniz zaman Visual Basic .Net ve C# için kullanılabilir durumda olduğunu göreceksiniz.

Kullanıcı seviyesine baktığımızda, oluşan ofis uygulamasının normal bir ofis uygulamasından farkı yoktur. Aynı şekilde ofis uygulamasını kullanır. Göreceğimiz tek farklı şey geliştirmeler olacaktır. Ancak arka tarafa baktığımızda ofis dökümanı (geliştirme yapılmış) açıldığında ofis common language runtime’ı başlatır ve ilgili assembly’i çağırır. Yazılan uygulamaya göre de ilgili kodlar çalıştırılır.

VSTO öncesinde de ofis için uygulamalar geliştirebiliyorduk. Bu ortama VBA deniliyor. VBA’da ofis için uygulama geliştirme anlamında yardımcı bir ortam sağlamakta ancak VSTO’ya göre güvenlik ve dağıtım anlamında eksiklikleri olduğu görülmektedir. VBA halen desteklenmeye devam edilmektedir.

VBA ile VSTO’yu şu şekilde karşılaştırabiliriz;

VSTO VBA
Geliştirmeler ofis dökümanı Geliştirmeler ofis dökümanı
içinden ayrılmış durumdadır. içindedir.

.Net Framework API’leri Sadece ofis obje modelleri ve
kullanılabilir. VBA fonksiyonelliği kullanılır.

Yüksek seviyede güvenlikde dizayn Limitli güvenlik vardır.
edilmiştir.

Birçok dağıtım opsiyonu vardır. Limitli dağıtım opsiyonu vardır.

Visual Studio .Net’in tüm Makro kaydı, yazımı ile ya da
özelliklerini kullanır. sınırlı komutlar yazımı ile
kullanılabilen limitli bir
geliştirme ortamı vardır.

İstemci makinesinde .Net Framework İstemci makinesinde sadece ofis
ve Ofis gereklidir. gereklidir.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Şimdilik projelerimizde ikinci yöntem olan dll kulanmadan proje yazma yöntemini kullanacağız. İlk projemizde word uygulamamızı yalnızca açmakla yetinmiştik. Şimdi bu örneğimizi biraz daha geliştirelim.

Yeni bir proje açalım ve iki adet command buton ekleyelim.Birinci buton word belgemizi açmak ikincisi ise kapatmak için olsun ve şu kodları formumuza yazalım:

Dim objWord As Object ’word programı
Dim objDocument As Object

‘Üstteki iki tanımlamamızı formun general declerations bölümünde yapıyoruz ki formun bütününde geçerli olsun

Private Sub Command1_Click() ‘word belgesi açmak için kullanacağımız buton

Set objDocument = objWord.Documents.Add ’yeni word belgesi açıyoruz.

objWord.Visible = True ’word programını görünür hale getiriyoruz.

End Sub

Private Sub Command2_Click() ‘word belgesini kapatmak için kullanacağımız buton

objDocument.Close ‘word belgemizi kapatıyoruz
objWord.Quit ‘word uygulamamızı kapatıyoruz

Set objDocument = Nothing ‘word belgemizi bellekten siliyoruz
Set objWord = Nothing ‘word uygulamamızı bellekten siliyoruz
End Sub

Private Sub Form_Load()
Set objWord = CreateObject("Word.Application") ’Form yüklenirken word uygulamasını oluşturuyoruz.
End Sub

Programımızı çalıştırdığımızda birinci butona tıkladığımızda yeni bir word belgesi açılacak, ikinci butona tıkladığımızda ise kapatılacaktır.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Bu örneğimize bir de kayıt olayını ve hata kontrolünü de ekleyelim. Çünkü eğer bir belge açılamadı ise kayıt ya da kapatma olayını yapmaya kalktığımızda hata verecektir.

Kodu ise Visual Basic 6 ile şu şekilde olur:

Kodu ise şu şekilde:
Dim objword as Object
Dim objDocument As Object
Private Sub cmdbelgekapa_Click()
On Local Error GoTo hata ‘oluşan yerel bir hata da hata alt programına git
objDocument.Close ‘word belgesini kapat
objWord.Quit ‘word uygulamasını kapat

Set objDocument = Nothing ‘word belgesini bellekten sil
Set objWord = Nothing ‘word uygulamasını bellekten sil

hata:
Select Case Err ‘oluşan hatanın koduna göre seçim yap
Case 91: MsgBox "Önce belge açmanız gerekiyor"
End Select
Exit Sub ‘alt programdan çık
End Sub

Private Sub cmdyeniac_Click()
Set objDocument = objWord.Documents.Add ’yeni word belgesi açıyoruz.

objWord.Visible = True ’word programını görünür hale getiriyoruz.
End Sub

Private Sub Command3_Click()
On Local Error GoTo hata

objDocument.save ‘belgeyi kaydet

hata:
Select Case Err
Case 91: MsgBox "Önce belge açmanız gerekiyor"
End Select
Exit Sub
End Sub

Private Sub Form_Load()
Set objWord = CreateObject("Word.Application") ’yeni word uygulaması oluşturuyoruz.
End Sub
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Uygulamamıza bir de daha önceden kaydedilmiş olan belgeleri açma özelliği ekleyelim.

Önce Visual Basic 6 ile nasıl oluyor onu yapalım.

Öncelikle belge açma penceresini görüntüleyebilmemiz için common dialog nesnesini eklememiz gerekiyor. Bunun için projects menüsünden components seçeneği ile gelen pencereden Controls başlığı altındaki Microsoft Common Dialog control seçeneğini işaretlemek ya da Browse seçeneği ile comdlg32.ocx dosyasını elle seçerek tamam düğmesine basarak toolbox penceresine common dialog nesnesini ekleyebiliriz.

Daha sonra nesnemizi projemize ekleyelim. Formumuza bir buton ekleyelim ve ismini cmdbelgeac verelim. Butonumuza şu kodları yazıyoruz:

Private Sub cmdbelgeac_Click()
CommonDialog1.DialogTitle = "Word belgesi Seçiniz"
CommonDialog1.FileName = ""
CommonDialog1.Filter = "Doc(*.doc)|*.doc|Rtf (*.rtf)|*.rtf"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Set objDocument = objWord.Documents.Open(CommonDialog1.FileName)
objWord.Visible = True
End If
End Sub

VB.NET ile ise şu şekilde yapıyoruz:
Öncelikle belge açma penceresini görüntüleyebilmemiz için OpenFileDialog nesnesini eklememiz gerekiyor. Daha sonra formumuza bir buton ekleyelim ve ismini cmdbelgeac verelim. Butonumuza şu kodları yazıyoruz:

Private Sub cmdbelgeac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdbelgeac.Click
OpenFileDialog1.Title = "Belge seçiniz..."
OpenFileDialog1.Filter = "Word Belgeleri (*.doc)|*.doc|Zengin Metin Biçimi (*.rtf)|*.rtf"
OpenFileDialog1.FilterIndex = 1

If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
MsgBox("Dosya seçilmedi")
Else
objDocument = objWord.Documents.Open(OpenFileDialog1.FileName)
objWord.Visible = True
End If
End Sub
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Şimdiki örneğimizde ise bir word belgesi açarak önizleme yapalım
Visual Basic 6 kodu şu şekilde olacak:
Öncelikle common dialog nesnesini ekleyelim. Ve formumuza 3 adet buton ekleyelim. Biri belge açma, biri önizleme biri de kapatma için olsun. Kod ise şu şekilde olacak:

Dim objWord As Object ’word programı
Dim objDocument As Object
Private Sub cmdbelgeac_Click()
CommonDialog1.DialogTitle = "Word belgesi Seçiniz"
CommonDialog1.FileName = ""
CommonDialog1.Filter = "Doc(*.doc)|*.doc|Rtf (*.rtf)|*.rtf"
CommonDialog1.ShowOpen
If CommonDialog1.FileName <> "" Then
Set objDocument = objWord.Documents.Open(CommonDialog1.FileName)
objWord.Visible = True
End If
End Sub
Private Sub cmdbelgekapa_Click()
On Local Error GoTo hata
objDocument.Close
objWord.Quit

Set objDocument = Nothing
Set objWord = Nothing

hata:
Select Case Err
Case 91: MsgBox "Önce belge açmanız gerekiyor"
End Select
Exit Sub
End Sub

Private Sub cmdonizleme_Click()
objWord.WindowState = wdWindowStateMaximize ‘word penceresini tam ekran yapıyoruz
objWord.Visible = True
objWord.Activate
objDocument.PrintPreview
End Sub

Private Sub Form_Load()
Set objWord = CreateObject("Word.Application") ’yeni word uygulaması oluşturuyoruz.
End Sub

WindowState özelliği word penceremizin ekran boyutunu belirler ve şu değerleri alabilir:

wdWindowStateNormal veya 0 değeri
wdWindowStateMaximized veya 1 değeri
wdWindowStateMinimize veya 2 değeri


VB. NET ile ise şu şekilde olacak:
Öncelikle OpenFileDialog nesnesini ekleyelim. Ve formumuza 3 adet buton ekleyelim. Biri belge açma, biri önizleme biri de kapatma için olsun. Kod ise şu şekilde olacak:

Public Class Form1
Dim objWord As Object ’word programı
Dim objDocument As Object
Private Sub cmdbelgekapa_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdbelgekapa.Click
Try
objDocument.Close() ’word belgesini kapat
objWord.Quit() ’word uygulamasını kapat

objDocument = Nothing ’word belgesini bellekten sil
objWord = Nothing ’word uygulamasını bellekten sil

Catch
MsgBox("Önce belge açmanız gerekiyor")
Exit Sub
End Try
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
objWord = CreateObject("Word.Application") ’yeni word uygulaması oluşturuyoruz.
End Sub

Private Sub cmdbelgeac_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdbelgeac.Click
OpenFileDialog1.Title = "Belge seçiniz..."
OpenFileDialog1.Filter = "Word Belgeleri (*.doc)|*.doc|Zengin Metin Biçimi (*.rtf)|*.rtf"
OpenFileDialog1.FilterIndex = 1

If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.Cancel Then
MsgBox("Dosya seçilmedi")
Else
objDocument = objWord.Documents.Open(OpenFileDialog1.FileName)
objWord.Visible = True
End If
End Sub

Private Sub cmdonizleme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdonizleme.Click
objWord.WindowState = 0
’word penceresini tam ekran yapıyoruz
objWord.Visible = True
objWord.Activate()
objDocument.PrintPreview()
End Sub
End Class

WindowState özelliği word penceremizin ekran boyutunu belirler ve şu değerleri alabilir:

Normal pencere için 0 değeri
Tam ekran yapmak için 1 değeri
Simge durumuna küçültmek için 2 değeri

görüldüğü gibi WindowState özelliği VB6 da aldığı string değerlerini alamıyor burada.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
Şimdi de belgemize yazı eklemeye bakalım
Formumuza bir text kutusu 2 adet de komut butonu ekleyelim. Bir komut düğmesine basarak text kutusuna girdiğimiz yazıyı word belgesine çeşitli formatlarda ekleyeceğiz. Diğer komut butonu ise belgeyi kapatacak. Ayrıca belgemizin dilini tespit ederek bunu da text kutusuna yazacağız.

VB 6.0 ile kod şu şekilde olacak:

Dim objWord As Object ’word programı
Dim objDocument As Object
Dim objselection As Object
Const END_OF_STORY = 6
Private Sub cmdbelgekapa_Click()
On Local Error GoTo hata
objDocument.Close
objWord.Quit

Set objDocument = Nothing
Set objWord = Nothing

hata:
Select Case Err
Case 91: MsgBox "Önce belge açmanız gerekiyor"
End Select
Exit Sub
End Sub
Private Sub cmdekle_Click()
Dim dil

Set objDocument = objWord.Documents.Add ’yeni word belgesi açıyoruz.

objWord.Visible = True ’word programını görünür hale getiriyoruz.

Set objselection = objWord.Selection

If Not Text1.Text = "" Then
With objDocument.Paragraphs(1)
.Alignment = wdAlignParagraphCenter
End With
With objselection.Font
.Name = "Times New Roman" ’yazı tipini değiştiriyoruz
.Size = 14 ’yazı boyutunu değiştiriyoruz
.Underline = True ’yazıyı altı çizili yapıyoruz
End With
objselection.boldrun ’yazıyı kalın yapıyoruz
objselection.TypeText Text1.Text ’Tablodan önce Tablo 1 yazısını ekliyoruz
objselection.TypeParagraph ’paragrafı seçiyoruz
objselection.boldrun ’yazının kalınlık özelliğini kaldırıyoruz
objselection.TypeText Text1.Text ’Tablodan önce Tablo 1 yazısını ekliyoruz

dil = objselection.languageID
If dil = 1055 Then
Text1.Text = Text1.Text & " dil Türkçe"
Else
If dil = 2057 Then
Text1.Text = Text1.Text & " dil İngiltere İngilizcesi"
Else
If dil = 1033 Then
Text1.Text = Text1.Text & " dil Amerikan İngilizcesi"
End If
End If
End If

End If
End Sub

Private Sub Form_Load()
Set objWord = CreateObject("Word.Application") ’yeni word uygulaması oluşturuyoruz.
End Sub


VB.NET ile kodumuz şu şekilde olacak

Public Class Form1
Dim objWord As Object ’word programı
Dim objDocument As Object
Dim objselection As Object
Const END_OF_STORY = 6

Private Sub cmdkapat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdkapat.Click
Try
objDocument.Close() ’word belgesini kapat
objWord.Quit() ’word uygulamasını kapat

objDocument = Nothing ’word belgesini bellekten sil
objWord = Nothing ’word uygulamasını bellekten sil

Catch
MsgBox("Önce belge açmanız gerekiyor")
Exit Sub
End Try

End Sub

Private Sub cmdyaziekle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdyaziekle.Click
Dim dil

objDocument = objWord.Documents.Add ’yeni word belgesi açıyoruz.

objWord.Visible = True ’word programını görünür hale getiriyoruz.

objselection = objWord.Selection

If Not TextBox1.Text = "" Then
With objDocument.Paragraphs(1)
.Alignment = 1
End With
With objselection.Font
.Name = "Times New Roman" ’yazı tipini değiştiriyoruz
.Size = 14 ’yazı boyutunu değiştiriyoruz
.Underline = True ’yazıyı altı çizili yapıyoruz
End With
objselection.boldrun() ’yazıyı kalın yapıyoruz
objselection.TypeText(TextBox1.Text) ’Tablodan önce Tablo 1 yazısını ekliyoruz
objselection.TypeParagraph() ’paragrafı seçiyoruz
objselection.boldrun() ’yazının kalınlık özelliğini kaldırıyoruz
objselection.TypeText(TextBox1.Text) ’Tablodan önce Tablo 1 yazısını ekliyoruz

dil = objselection.languageID
If dil = 1055 Then
TextBox1.Text = TextBox1.Text & " dil Türkçe"
Else
If dil = 2057 Then
TextBox1.Text = TextBox1.Text & " dil İngiltere İngilizcesi"
Else
If dil = 1033 Then
TextBox1.Text = TextBox1.Text & " dil Amerikan İngilizcesi"
End If
End If
End If

End If

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
objWord = CreateObject("Word.Application") ’yeni word uygulaması oluşturuyoruz.
End Sub
End Class

VB 6 ile VB .NET ile yapılmış programlarımızı incelersek VB 6 ile kullandığımız bazı özellik isimlerini VB .NET ile kullanamayıp bunların yerine rakamsal ifadeler kullandığımızı görürürüz. Bunlara kısaca değinelim.

Programımızda
With objDocument.Paragraphs(1)
.Alignment = wdAlignParagraphCenter
End With
İfadesi ile hizalama seçili olan paragrafı hizaladık.
.Alignment ifadesi şu değerleri alabilir:
1 değeri ortaya hizalama
0 değeri sola hizalama
2 değeri sağa hizalama

Yazımızı kalın yapmak için iki ayrı yöntem kullanabiliriz..
Birinci yöntem de objselection.boldrun ifadesini kullanabiliriz.
Elbette öncelikle bir alanın seçilmesi gereklidir. Çünkü objselection ifadesi ile seçili olan alan üzerinde işlem yapılır.
objselection.TypeParagraph ifadesi ile paragrafı seçiyoruz.
objselection.boldrun ilk yazıldığında yazıyı kalın yapar tekrar yazıldığında ise yazının kalınlık özelliğini kaldırır.
objselection.Font.bold=true yazarak da yazımızı kalın yapabiliriz.
objselection.Font.bold=false yazarak yazının kalınlık özelliğini kullanabiliriz.

Biz programımızda objselection.Font.Underline=true yazarak yazımızı altı çizili yaptık.
objselection.Font.Italic=true yazılarak seçili olan yazı eğik hale getirilebilir.

Ayrıca örneğimizde objselection.languageID ifadesi ile belgemizin dilini tespit ettik. Biz burada yalnızca birkaç adet dil tanımlaması kullandık.

objselection.languageID ifadesinin aldığı bazı parametreler şunlardır:

özellik ismi değer
wdArabic 1025
wdChineseHongKongSAR 3076
wdChineseMacaoSAR 5124
wdChineseSingapore 4100
wdEnglishUK 2057
wdEnglishUS 1033
wdFarsi 1065
wdFrench 1036
wdGerman 1031
wdHindi 1081
wdJapanese 1041
wdKorean 1042
wdRussian 1049
wdSpanish 1034
wdTurkish 1055
wdUrdu 1056

Ben buraya yalnızca başlıca dilleri yazdım.
 
Kayıt
22 Nisan 2007
Mesajlar
1.361
Beğeniler
0
Şehir
BeN SeNiN CaNıN İçİN ÖmRüMü BiR KiBRiTiN KaBıNDa T
objselection.languageID ifadesini kullanarak yazım denetimi ile ilgili bir örnek yapalım.

Herhangi bir yazıdaki hataları word programının yazım denetimini kullanarak düzeltmek için şu işlemler yapılır. Örnek olarak formumuza bir komut butonu, bir de text kutusu ekleyelim. Komut butonuna tıklandığında text kutusuna girilen yazının yazım denetimi Türkçe’ye göre yapılsın ve düzeltilmiş hali tekrar text kutusuna aktarılsın.

V.B. 6.0’ a göre kod şu şekilde olacak:

Private Sub Command1_Click()
Dim dil
Dim ObjWord As Object, yazi$
Dim objselection As Object
On Error Resume Next
Set ObjWord = CreateObject("Word.Basic") ’Word uygulamamızı oluşturuyoruz
Set objselection = ObjWord.Selection

ObjWord.AppShow ’word penceresini görüntülüyoruz
ObjWord.FileNew ’yeni belge oluşturuyoruz

ObjWord.Insert Text1.Text ’Düzeltilecek yazı word belgesine aktarıyoruz

ObjWord.ToolsSpelling ’Yazım denetimini çalıştırıyoruz
ObjWord.EditSelectAll

ObjWord.Selection.WholeStory
ObjWord.Selection.Text = Text1.Text
objselection.languageID = 1055 ’Heceleme dili olarak Türkçe’yi seçtik

yazi = ObjWord.Selection$()

Text1 = Left$(yazi, Len(yazi) - 1) ’düzeltilecek karakterleri belirliyoruz

Show ’formumuzu görüntülüyoruz

Set ObjWord = Nothing ’word belgemizi hafızadan siliyoruz
End Sub


V.B. NET’e göre ise kod şu şekilde olacak:

Public Class Form1

Private Sub cmdyazimdenetimi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdyazimdenetimi.Click
Dim dil
Dim ObjWord As Object, yazi$
Dim objselection As Object
On Error Resume Next
ObjWord = CreateObject("Word.Basic") ’Word uygulamamızı oluşturuyoruz
objselection = ObjWord.Selection

ObjWord.AppShow() ’word penceresini görüntülüyoruz
ObjWord.FileNew() ’yeni belge oluşturuyoruz

ObjWord.Insert(TextBox1.Text) ’Düzeltilecek yazı word belgesine aktarıyoruz

ObjWord.ToolsSpelling() ’Yazım denetimini çalıştırıyoruz
ObjWord.EditSelectAll()

ObjWord.Selection.WholeStory()
ObjWord.Selection.Text = TextBox1.Text
objselection.languageID = 1055 ’Heceleme dili olarak Türkçe’yi seçtik

yazi = ObjWord.Selection$()
TextBox1.Text = yazi.Substring(0, Len(yazi) - 1) ’düzeltilecek karakterleri belirliyoruz

Show() ’formumuzu görüntülüyoruz

ObjWord = Nothing ’word belgemizi hafızadan siliyoruz

End Sub
End Class

Substring(parametre1,parametre2) fonksiyonu yazıda belli sayıdaki karakteri bulmak için kullanılır. İlk parametresi kaçıncı karakterden başlanacağı, ikinci parametresi ise kaç karakter alınacağını belirler.

Görüldüğü gibi objselection.languageID = 1055 ifadesi ile heceleme dilini Türkçe olarak belirledik
 
Yukarı Alt