Belirtiler
Microsoft Visual Basic .NET, Microsoft Visual C# .NET veya Microsoft Visual C++ ile Microsoft Excel'i otomatikleştirirseniz, belirli yöntemleri çağırırken aşağıdaki hatayı alabilirsiniz:
Hata: 0x80028018 (-2147647512)Açıklama: Eski Biçim veya Geçersiz Tür Kitaplığı
Neden
Aşağıdaki koşullar doğru olduğunda bir Excel yöntemini çağırırken bu hatayı alırsınız:
-
yöntemi bir LCID (yerel ayar tanımlayıcısı) gerektirir.
-
Excel'in İngilizce sürümünü çalıştırırsınız. Ancak, bilgisayarın bölgesel ayarları İngilizce olmayan bir dil için yapılandırılır.
İstemci bilgisayar Excel'in İngilizce sürümünü çalıştırıyorsa ve geçerli kullanıcının yerel ayarı İngilizce dışında bir dil için yapılandırılmışsa, Excel yapılandırılan dilin dil paketini bulmaya çalışır. Dil paketi bulunamazsa hata bildirilir.
Geçici Çözüm
Bu sorunu geçici olarak çözmek için aşağıdaki yöntemlerden birini kullanabilirsiniz:
-
Office sürümünüz için Çok Dilde Kullanıcı Arabirimi Paketi'ni yükleyin.
-
Çağrı için CultureInfo belirtebilmeniz için InvokeMember kullanarak Excel yöntemini veya özelliğini yürütebilirsiniz. Örneğin, aşağıdaki kodda CultureInfo olarak "en-US" ile Çalışma Kitapları nesnesi Ekleme yöntemini nasıl çağırabileceğiniz gösterilmektedir:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
-
Alternatif olarak, Excel yöntemini çağırmadan önce CultureInfo değerini de ayarlayabilirsiniz. Örneğin:
Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _ System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _ New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
-
Microsoft Office\Office11 altında bir 1033 dizini oluşturun. Ardından, excel.exe 1033 dizinine kopyalayın ve xllex.dll olarak yeniden adlandırın. Daha fazla bilgi için aşağıdaki bağlantıya tıklayın:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Bölgesel ayarların Office'in geçerli dil sürümüyle eşleşmediği bir bilgisayar için bu geçici çözümlerden birini kullandığınızda, Excel'in nasıl davrandığını ve Excel'in belirli bir yerel ayar için biçimlendirilmiş verileri nasıl yorumladığı hakkında bilgi sahibi olmanız gerekir. Visual Studio .NET ile genelleştirilmiş Excel çözümleri yazma hakkında daha fazla ayrıntı için msdn'deki şu makalelere bakın:Birden Çok Ülkede/Bölgede Kullanmak için Office Çözümleri Oluşturma
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxMicrosoft Office Sistemi için Microsoft Visual Studio Araçları ile Oluşturulan Çözümler için Genelleştirme ve Yerelleştirme Sorunları
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
Durum
Microsoft, bunun "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde bir hata olduğunu onayladı.
Ek Bilgi
Davranışı yeniden oluşturma adımları
-
Bilgisayarın yerel ayarının İngilizce dışında bir dile ayarlandığını doğrulayın.Windows 2000 için:
-
Windows Denetim Masası'da Bölgesel Seçenekler'e çift tıklayın.
-
Genel sekmesinde bir konum seçin ve ardından Tamam'a tıklayın.
Windows XP veya Windows Server 2003 için:
-
Denetim Masası'da Bölge ve Dil Seçenekleri'ni açın.
-
Bölgesel Seçenekler sekmesinde bir yerel ayar seçin ve ardından Tamam'a tıklayın.
-
-
Microsoft Visual Studio .NET'i başlatın.
-
Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın. Yeni Proje iletişim kutusundaki Proje Türleri'nin altında Visual Basic Projeleri'ne tıklayın. Şablonlar altında, Windows Uygulaması'nı ve ardından Tamam'ı tıklatın. Varsayılan olarak, Form1 oluşturulur.
-
Görünüm menüsünde Araç Kutusu'na tıklayın ve form1'e bir düğme ekleyin.
-
Formun kod penceresini görüntülemek için Düğme1'e çift tıklayın.
-
Kod penceresinde aşağıdaki kodu değiştirin
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.ClickEnd Sub
Ile:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oApp As Object Dim oDoc As Object oApp = CreateObject("Excel.Application") oApp.Visible = True oDoc = oApp.Workbooks.Add oDoc.Close() oApp.Quit() oDoc = Nothing oApp = NothingEnd Sub
-
Form1 kod modülünün başına aşağıdaki satırı ekleyin:
Option Strict Off
-
Programı derlemek ve çalıştırmak için F5 tuşuna basın.
-
Hatayı oluşturmak için Düğme1'e tıklayın. Hata şu satırda oluşur:
oDoc = oApp.Workbooks.Add
Başvurular
Office Otomasyonu hakkında daha fazla bilgi için aşağıdaki Microsoft Office Geliştirme Web sitesini ziyaret edin:
http://support.microsoft.com/ofd Ayrıca, aşağıdaki Microsoft Bilgi Bankası makalelerine bakın:
301982 Visual Basic .NET'ten Microsoft Excel'i otomatikleştirme
302084 Microsoft Visual C# .NET'ten Microsoft Excel'i otomatikleştirme