XL: Excel Otomasyonu kullanma Arrays gönderme, kısıtlamaları

Makale çevirileri Makale çevirileri
Makale numarası: 177991 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Microsoft Excel çalışma sayfaları ve Otomasyon kullanarak makroları için dizi geçirmeden sınırlamaları anlatılmaktadır. Bu sınırlamalar aştı, çalışma zamanı hataları, otomasyon kodunuzda alabilirsiniz.

Daha fazla bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; satılabilirlik ve/veya belirli bir amaca uygunluk da dahil, ancak bununla sınırlı olmamak kaydıyla, örtülü veya açık garanti vermez. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek uzmanları, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.
Programlama deneyiminiz kısıtlıysa, bir Microsoft Sertifikalı İş Ortağı'na veya Microsoft Danışmanlık Hizmetleri'ne başvurabilirsiniz. Daha fazla bilgi için şu Microsoft Web sitelerini ziyaret edin:

Microsoft Partner - https://partner.microsoft.com/global/30000104 Onaylandı

Microsoft danışma belgesi Hizmetleri - http://support.microsoft.com/gp/advisoryservice

Kullanılabilir destek seçenekleri ve Microsoft'a başvurma konusunda daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSDizi Automation'ı kullanarak Microsoft Excel'e geçirmeden, aşağıdaki kısıtlamalar, sürümüne mi, dizinin bir çalışma sayfası aralığı veya geçirmeden ve Excel makro bağımsız değişkeni olarak uygulanır. Tablo Ayrıntılar için aşağıdaki uygun dipnotlardan</a1> konusuna bakın.
   Version of          Passing Array to     Passing Array to
   Microsoft Excel     Worksheet Range      Macro (Procedure)
   ----------------------------------------------------------

   5.0                        A                B,C

   7.0 (Excel 95)             D                E,C,H

   8.0 (Excel 97)             F                G,H

   9.0 (Excel 2000)           F                G,H

				

Dipnotlar

C:

Dizideki öğelerin sayısı yaklaşık 6550 ' dir. Bu sınırı aşarsanız, aşağıdaki hata iletilerinden birini veya her ikisini alabilirsiniz:
Bellek yetersiz
1005: Range sınıfının Value özelliği ayarlanamıyor.
Excel Excel işlemi tersine çevir işlevi kullanılarak geçmesi dizideki öğelerin sayısı, 4095 ' dir. Bu sınırı aşarsanız, aşağıdaki hata iletisini alırsınız:
Çalışma zamanı hatası '1004':
Başarısız olan uygulama sınıfının yöntem sırasını değiştir
b:

Dizideki öğelerin sayısı en fazla 4095 ' dir. Bu sınırı aşarsanız, aşağıdaki hata iletisini alabilirsiniz:
Çalışma zamanı hatası '1004':
Başarısız olan uygulama sınıfının yöntemi Çalıştır
Not: bir çok boyutlu bir dizi geçirmeden sonra bir hata iletisi, ancak 4095 öğelerin toplam sayısını aştığında, çalışacak makro olacak Excel alamayabilir.

c:

Dizi parametresi Excel makro tanımlarken, Variant değişken olarak tanımlanmalıdır veya Automation'ı kullanarak bir makroyu çalıştırmayı denediğinizde aşağıdaki hata iletisini alırsınız:
Çalışma zamanı hatası '1004':
<a1>Makro</a1> < makronun > bulunamıyor.
Örneğin, Excel'de makro adını AcceptArray varsayalım. Bir dizi Excel makroda nasıl tanımlanmalıdır örnek aşağıdadır:
   Public Sub AcceptArray(ByVal myarray As Variant)
      ' You can pass the parameter either ByVal or ByRef.
      ' To determine the number of elements in the array, use
      ' the UBound function.
   End Sub
				
D:

Dizideki öğelerin sayısı 5461 ' dir. Bu sınırı aşarsanız, aşağıdaki hata iletilerinden birini alırsınız:
Çalışma zamanı hatası '1004':
Başarısız olan uygulama sınıfının yöntem sırasını değiştir
- veya -
Çalışma zamanı hatası '1005':
Range sınıfının Value özelliği ayarlanamıyor.
e:

Dizideki öğelerin sayısı 5461 ' dir. Bu sınırı aşarsanız, aşağıdaki hata iletisini alırsınız:
Çalışma zamanı hatası '1004':
Başarısız olan uygulama sınıfının yöntemi Çalıştır
f:

Dizideki öğelerin sayısı sınırlı bellek veya Excel çalışma sayfası en büyük boyutu (65536 satır X 256 sütun). Ancak, Excel'in geçirebilirsiniz dizideki öğelerin sayısı Excel işlemi tersine çevir işlevi 5461 kullanmaktır. Bu sınırı aşarsanız, aşağıdaki hata iletisini alırsınız:
Çalışma zamanı hatası: '13':
TÜR UYUŞMAZLIĞI
g:

Dizideki öğelerin sayısı, yalnızca kullanılabilir bellek tarafından sınırlandırılır. Ayrıca, Excel makroda bir Variant değişken olarak parametre tanımlamak gerekmez. Ancak, dizi geçirmek istiyorsanız, ByVal olarak örnekte olduğu gibi bu makalenin dipnot C bir Variant değişken parametre tanımlamalısınız. Bir değişken değişken tanımlarsanız, bir çalıştırma hatası 13'de, "Tür uyuşmazlığı" hata iletisi alır.

h:

ByRef bağımsız değişken için bir işlem dışı Otomasyon geçirerek, sunucu, Excel gibi verilerin sıralanırken Otomasyon arasında yapılır denetleyicisi (veya istemci) ve bunların ayrı bir işlemde çalıştırmak sonra sunucu. Yani, bir dizi ByRef kullanarak Excel'e geçirildiğinde, dizinin bir kopyası Excel <a1>Adres</a1> alanına gönderilir. Excel'in yordamı çalıştıktan sonra dizinin bir kopyası istemciye geçirilir. Bu bağımsız değişken için bir işlem dışı sunucu ByRef kullanarak geçirilmesi izin vermiyor, ancak çok verimli değildir. Bir işlemdeki Otomasyon sunucusu (bir dinamik bağlantı kitaplığı (DLL)) ve kullanarak geçirdiğinizde ByRef bağımsız değişken yok sıralanırken yapılır, sonra diğer taraftan, bu çok verimli olur. Sunucu, aynı dizinin bellekte istemcisi olarak kullanıyor. Sunucu olarak istemcinin aynı adres alanını çalışır, çünkü bu durum olasıdır.

Excel gibi bir işlem dışı sunucusuyla sıralanırken nedeniyle, ByRef yerine ByVal dizi geçirilecek daha verimli olur. Bu şekilde, Excel'e yalnızca tek kopya geçirilir ve Excel'in bu kopyayı istemciye geri geçirmek sağlayın. Bir Excel makro için bir dizi ByVal geçirmek için <a0></a0>, bir Variant değişken olarak Excel makroda parametre tanımlamalısınız. Bu makalenin bir örnek için C dipnot</a1> konusuna bakın.

Örnek Visual Basic yordamları

Microsoft Visual Basic aşağıdaki örnek uygulamalar alt için yordamlar diziler Excel'e aktarmak göstermektedir. Ilk iki yordam için bir çalışma sayfası aralığı dizisi geçirerek, çalışma sayfasındaki bir hücre aralığı doldurmak göstermektedir. Üçüncü yordamı, bir Excel makro için bir dizi geçirilecek gösterilmiştir.

Aşağıdaki bildirimleri, her örnekle kullanılır:
OPTION EXPLICIT
Nesne olarak özel xlApp
Nesne olarak özel xlBook
Nesne olarak özel xlSheet
Bir çalışma sayfası aralığı için 1'i boyutlu bir dizi geçirmeden:
   Public Sub OneDimension()
      Const size = 5461
      Dim myarray(1 To size) As Integer
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      Set xlBook = xlApp.Workbooks.Add
      Set xlSheet = xlBook.Worksheets("Sheet1")
      xlSheet.Cells(1, 1).Resize(size, 1).Value = _
         xlApp.Application.Transpose(myarray)
   End Sub
				
2 boyutlu bir dizi bir çalışma sayfası aralığı için gönderme:
   Public Sub TwoDimension()
      Const size = 2730
      Dim myarray(1 To size, 1 To 2) As Integer
      ' Number of elements = 2730 * 2 = 5460.
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      Set xlBook = xlApp.Workbooks.Add
      Set xlSheet = xlBook.Worksheets("Sheet1")
      xlSheet.Cells(1, 1).Resize(size, 2).Value = myarray
   End Sub
				
dizi bir bağımsız değişken bir Excel makro gönderme:
   Public Sub RunExcelMacro()
      Const size = 5461
      Dim myarray(1 To size) As Integer
      Set xlApp = CreateObject("Excel.Application")
      xlApp.Visible = True
      Set xlBook = xlApp.Workbooks.Open("C:\MyBook.xls")
      xlApp.Run "AcceptArray", myarray
   End Sub
				
C:\MyBook.xls içinde bir modüle The AcceptArray yordamda, aşağıdakine benzer:
   Option Explicit

   Public Sub AcceptArray(ByVal myarray As Variant)
      MsgBox "Size of first dimension: " & UBound(myarray, 1)
   End Sub
				

Referanslar

Diziler ve Excel hakkında daha fazla bilgi için lütfen aşağıdaki Microsoft Knowledge Base'deki makaleleri bakın:
166342XL97: Microsoft Excel 97'de maksimum dizi boyutu

153307Nasıl YAPıLıR: parametreler Al Microsoft Excel makroları Çağır

153090Bir Excel çalışma sayfasına bir Visual Basic dizisini geçir nasıl
Visual Basic for Applications Yardım alma hakkında daha fazla bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
163435VBA: Kaynaklar Visual Basic for Applications programlama

Özellikler

Makale numarası: 177991 - Last Review: 29 Mart 2007 Perşembe - Gözden geçirme: 3.6
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 2.35acres
  • Microsoft Excel 5.0c
  • Microsoft Office 2000 Developer Edition
Anahtar Kelimeler: 
kbmt kbautomation kbinfo KB177991 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:177991

Geri Bildirim Ver

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com