Belirtiler
Microsoft Excel'i denetlemek için Otomasyon kullanan kodu çalıştırırken aşağıdaki hatalardan biri oluşabilir:
Microsoft Excel 97'de ve Excel'in sonraki sürümlerinde aşağıdaki hata iletilerinden birini alırsınız:
Hata iletisi 1
Çalışma zamanı hatası '1004':
'_Global' nesnesinin 'yöntem>' <adı yöntemi başarısız oldu
Hata iletisi 2
Uygulama tanımlı veya nesne tanımlı hata
Microsoft Excel 95'te aşağıdaki hata iletilerinden birini alırsınız:
Hata iletisi 1
Çalışma zamanı hatası '-2147023174'
OLE Otomasyonu hatası
Hata iletisi 2
Çalışma zamanı hatası '462':
Uzak sunucu makinesi yok veya kullanılamıyor.
Neden
Visual Basic, öğeyi bir Excel nesne değişkeniyle nitelemeden bir Excel nesnesini, yöntemini veya özelliğini çağıran bir kod satırı nedeniyle Excel'e başvuru oluşturdu. Visual Basic, siz programı sonlandırana kadar bu başvuruyu yayınlamaz. Bu hatalı başvuru, kod birden fazla kez çalıştırıldığında otomasyon kodunu engeller.
Çözüm
Bu sorunu çözmek için, bir Excel nesnesine, yöntemine veya özelliğine yapılan her çağrının uygun nesne değişkeniyle nitelenmesi için kodu değiştirin.
Durum
Bu davranış tasarımdan kaynaklanır.
Daha Fazla Bilgi
Microsoft Excel'i otomatikleştirmek için, genellikle Excel Uygulama nesnesine veya Excel Çalışma Kitabı nesnesine başvuran bir nesne değişkeni oluşturursunuz. Daha sonra diğer nesne değişkenleri Çalışma Sayfasına, Aralığa veya Microsoft Excel nesne modelindeki diğer nesnelere başvuracak şekilde ayarlanabilir. Bir Excel 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 kendi Excel başvurusunu oluşturur. Bu başvuru, otomasyon kodunu birden çok kez çalıştırmayı denediğinizde sorunlara neden olabilir. Kod satırı nesne değişkeniyle başlasa bile, önce bir nesne değişkeni olmayan kod satırının ortasındaki bir Excel nesnesine, yöntemine veya özelliğine çağrı yapılabilmesini unutmayın.
Aşağıdaki adımlar, bu sorunun nasıl yeniden üretilip 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 otomatikleştirmek istediğiniz Excel sürümü için Nesne Kitaplığı'nı denetleyin.
-
Form1'e CommandButton denetimi yerleştirin.
-
Aşağıdaki kod örneğini Form1'in Kod Penceresi'ne kopyalayın.
Option Explicit Private Sub Command1_Click() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets("Sheet1") xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello" xlBook.Saved = True Set xlSheet = Nothing Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End Sub
-
Çalıştır menüsünde Başlat'a tıklayın veya programı başlatmak için F5 tuşuna basın.
-
CommandButton denetimine tıklayın. Hata oluşmaz. Ancak, Excel başvurusu oluşturulmuştur ve yayımlanmamıştır.
-
CommandButton denetimine yeniden tıklayın. "Belirtiler" bölümünde açıklanan hata iletilerinden birini aldığınıza dikkat edin.
Not Hata iletisi, kod çağrısından önce çağrısı olmadan hücrenin yöntemine başvurduğundan
oluşur xlSheet nesne değişkeni. -
Projeyi durdurun ve aşağıdaki kod satırını değiştirin:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Kod satırını aşağıdaki kod satırına benzeyecek şekilde değiştirin.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Programı yeniden çalıştırın. Hata iletisi almadan kodu birden çok kez çalıştırabileceğinize dikkat edin.
Başvurular
189618 Word denetlemek için Otomasyon'u kullanan Visual Basic kodunu çalıştırdığınızda "Çalışma zamanı hatası '-2147023174' (800706ba)" hata iletisini veya "Çalışma zamanı hatası '462' " alabilirsiniz Word