Belirtiler
Microsoft Word denetlemek için Otomasyon kullanan Microsoft Visual Basic kodunu çalıştırdığınızda aşağıdaki hata iletilerinden birini alabilirsiniz:
Hata iletisi 1
Çalışma zamanı hatası '-2147023174' (800706ba)
Otomasyon hatası
Hata iletisi 2
Çalışma zamanı hatası '462': Uzak sunucu makinesi yok veya kullanılamıyor
Neden
Visual Basic, Word nesne değişkeniyle nitelemeden bir Word nesnesini, yöntemini veya özelliğini çağıran bir kod satırı nedeniyle Word başvurusu oluşturms. Visual Basic, siz programı sonlandırana kadar bu başvuruyu yayınlamaz. Bu hatalı başvuru, kod birden çok kez çalıştırıldığında otomasyon kodunu engeller.
Çözüm
Kodu, bir Word nesnesine, yöntemine veya özelliğine yapılan her çağrının uygun nesne değişkeniyle nitelenmiş olması için değiştirin.
Durum
Bu davranış tasarımdan kaynaklanır.
Daha Fazla Bilgi
Word otomatikleştirmek için genellikle Word Uygulaması veya Document nesnesine başvuran bir nesne değişkeni oluşturursunuz. Daha sonra diğer nesne değişkenleri, Word nesne modelindeki bir Seçime, Aralığa veya diğer nesnelere başvuracak şekilde ayarlanabilir. bir Word nesnesi, yöntemi veya özelliği kullanmak için kod yazdığınızda, çağrıdan önce her zaman uygun nesne değişkenine sahip olmanız gerekir. Bunu yapmazsanız, Visual Basic şu anda çalışan örneğe ayarladığı gizli bir genel değişken başvurusu kullanır. Word kapatılırsa veya bildirilen nesne değişkeni serbest bırakılırsa, gizli genel değişken artık geçersiz (yok edilmiş) bir nesneye başvurur. Otomasyon kodunu yeniden çalıştırırken, bu gizli nesne değişkenine yapılan çağrılar yukarıda belirtilen hatayla başarısız olur.
Aşağıdaki adımlar, bu sorunun nasıl yeniden üretilip düzeltilip düzeltilip düzeltilemediğini göstermektedir.
Davranışı Yeniden Oluşturma Adımları
-
Visual Basic'te yeni bir Standart EXE projesi başlatın. Form1 varsayılan olarak oluşturulur.
-
Proje menüsünde Başvurular'a tıklayın ve ardından aşağıdaki seçeneklerden birine tıklayın:
-
Office Word 2007 için Microsoft Word 12.0 Nesne Kitaplığı'ne tıklayın
-
Word 2003 için Microsoft Word 11.0 Nesne Kitaplığı'ne tıklayın
-
Word 2003 için Microsoft Word 10.0 Nesne Kitaplığı'ne tıklayın
-
Word 2000 için Microsoft Word 9.0 Nesne Kitaplığı'ne tıklayın.
-
Word 97 için Microsoft Word 8.0 Nesne Kitaplığı'ne tıklayın.
-
-
Form1'e bir CommandButton yerleştirin.
-
Aşağıdaki kodu Form1'in Kod Penceresi'ne kopyalayın:
Option Explicit Private Sub Command1_Click() Dim oWord As Word.Application Dim oDoc As Word.Document Dim oRange as Word.Range Set oWord = CreateObject("Word.Application") With oWord .Visible = True .Activate .WindowState = wdWindowStateNormal End With Set oDoc = oWord.Documents.Add MsgBox "Document open", vbMsgBoxSetForeground With oDoc .PageSetup.LeftMargin = InchesToPoints(1.25) End With ' This example inserts text at the end of section one. Set oRange = ActiveDocument.Sections(1).Range With oRange .MoveEnd Unit:=wdCharacter, Count:= -1 .Collapse Direction:=wdCollapseEnd .InsertParagraphAfter .InsertAfter "End of section." End With With oDoc .Saved = True End With Set oRange = Nothing Set oDoc = Nothing oWord.Quit Set oWord = Nothing End Sub
-
Çalıştır menüsünde Başlat'a tıklayın veya F5 tuşuna basarak programı başlatın.
-
CommandButton'a tıklayın. Hata oluşmaz. Ancak, Word başvurusu oluşturulmuştur ve yayımlanmamıştır.
-
CommandButton düğmesine yeniden tıklayın ve daha önce açıklanan hatayı aldığınızı unutmayın.
Not Kod, çağrıdan önce oWord nesne değişkeni olmadan InchesToPoints Yöntemine başvurduğundan hata oluşur. -
Projeyi durdurun ve aşağıdaki satırı değiştirin:
.PageSetup.LeftMargin = InchesToPoints(1.25)
-Hedef-
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
Programı yeniden çalıştırın. Ardından CommandButton düğmesine tıklayın. Hata oluşmaz.
-
CommandButton düğmesine yeniden tıklayın ve hatayı aldığınızı unutmayın.
Not Kod, çağrıdan önce oWord nesne değişkeni olmadan ActiveDocument Bölümünün Range nesnesine başvurduğundan hata oluşur. -
Projeyi durdurun ve aşağıdaki satırı değiştirin:
Set oRange = ActiveDocument.Sections(1).Range
-Hedef-
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
Programı yeniden çalıştırın. Kodu hatasız olarak birden çok kez çalıştırabileceğinizi unutmayın.
Word otomatikleştirmek üzere bir Visual Basic projesi oluştururken, projenizin Microsoft Word Nesne Kitaplığı'na bir başvurusu varsa, Word Nesne Modeli'nin nesneleri, yöntemleri ve özellikleri için örnek kod Word Yardım dosyasından sağlanır. İmleç kodunuzdaki bir anahtar sözcüğün üzerindeyken F1 tuşuna basarak ilgili Yardım metinlerini görürsünüz.
Yardım konusunun örnek kodu Microsoft Word Visual Basic for Applications kodu olacaktır. Visual Basic kodunuzun gerektirdiği nesne başvurularını göstermez. Niteleyicileri uygun şekilde eklemeniz gerekir.
Başvurular
Ek bilgi için lütfen Microsoft Bilgi Bankası'ndaki aşağıdaki makalelere bakın:
178510 PRB: '_Global' Nesnesinin Excel Otomasyon Yöntemi Başarısız Oldu
Office uygulamalarının otomasyonu hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın: