XL: Omezení předávání Arrays Excel pomocí automatizace

Překlady článku Překlady článku
ID článku: 177991 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje omezení v předáním matice listy aplikace Microsoft Excel a makra pomocí automatizace. Pokud jsou tato omezení překročen, obdržet run-time chyb v kódu automatizace.

Další informace

Ukázky programů jsou společností Microsoft poskytovány pouze pro ilustraci bez žádné záruky výslovně uvedené ani předpokládané, včetně předpokládaných záruk vztahujících se k obchodovatelnosti nebo vhodnosti pro určitý účel. Tento článek předpokládá, že uživatel je obeznámen s programovacím jazykem, který je předmětem ukázky, a s nástroji použitými pro vytvoření a ladění skriptu. Pracovníci technické podpory společnosti Microsoft mohou vysvětlit funkce určitého postupu, nemohou však následující příklady rozšířit o další funkce nebo konstrukce podle konkrétních požadavků uživatele.
Pokud máte zkušenosti s programováním omezený, můžete kontaktovat partnera s certifikátem Microsoft nebo služby Advisory. Na další informace těchto webech společnosti Microsoft:

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

Služba Microsoft zpravodaje - http://support.microsoft.com/gp/advisoryservice

Další informace o možnostech podpory, které jsou k dispozici a o možnostech kontaktování společnosti Microsoft na následujícím webu společnosti Microsoft: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSPři předávání matic do aplikace Excel pomocí automatizace použít, následující omezení v závislosti na verzi aplikace Excel a zda jsou předávání pole oblast listu nebo jako argument do makra. Viz odpovídající poznámky pod čarou následující tabulku Podrobnosti.
   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

				

Poznámky pod čarou

A:

Maximální počet prvků v matici je přibližně 6550. Pokud tento limit překročíte, obdržíte jednu nebo obě následující chybové zprávy:
Nedostatek paměti
1005: Nelze nastavit vlastnost hodnota třídy Range
Maximální počet prvků pole, které lze předat Excel pomocí funkce Excel transponovat je od 4 095. Pokud tento limit překročíte, zobrazí se následující chybová zpráva:
Chyba spuštění '1004':
Transponovat metoda třídy aplikace se nezdařilo
B:

Maximální počet prvků pole je od 4 095. Pokud tento limit překročíte, může se zobrazit následující chybová zpráva:
Chyba spuštění '1004':
Spuštění metody třídy aplikace se nezdařilo
Poznámka: Při předávání multidimenzionální matice se může není zobrazit chybová zpráva, ale Excel, bude makro nelze spustit při Celkový počet prvků přesahuje od 4 095.

C:\:

Při definování parametr pole v maker aplikace Excel, musí být definováno jako proměnná variant nebo zobrazí následující chybová zpráva při pokusu o spuštění makra pomocí automatizace:
Chyba spuštění '1004':
Nelze najít makro < název makra >
Předpokládejme například, že název makra v aplikaci Excel je AcceptArray. Zde je příklad jak pole musí být definována v maker aplikace Excel:
   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:

Maximální počet prvků v matici je 5461. Pokud tento limit překročíte, obdržíte jednu z následujících chybových zpráv:
Chyba spuštění '1004':
Transponovat metoda třídy aplikace se nezdařilo
- nebo -
Chyba spuštění '1005:
Nelze nastavit vlastnost hodnota třídy Range
E:

Maximální počet prvků v matici je 5461. Pokud tento limit překročíte, zobrazí se následující chybová zpráva:
Chyba spuštění '1004':
Spuštění metody třídy aplikace se nezdařilo
F:

Maximální počet prvků v matici je omezen dostupné paměti nebo Excel listu maximální velikost (65 536 řádků X 256 sloupců). Však maximální počet prvků pole, které předávají Excel transponovat Excel pomocí funkce je 5461. Pokud tento limit překročíte, zobrazí se následující chybová zpráva:
Chyba spuštění '13:
NESHODA TYPŮ
G:

Maximální počet prvků pole, je omezen pouze dostupné paměti. Také nemáte definovat parametr jako proměnnou varianty v maker aplikace Excel. Však Pokud chcete předat matice ByVal, parametr je nutné definovat jako proměnná varianty jako v příkladu v poznámce pod čarou C výše v tomto článku. Chyba při běhu 13, "Neshodou typu" Chyba bude získat, pokud nedefinujete jako variant proměnnou.

H:

Při předávání argumentu ByRef automatizace out proces serveru, například Excel, zařazovací dat se provádí mezi automatizaci řadič (nebo klienta) a serveru od spuštění v samostatné procesy. To znamená, když matici je předán do aplikace Excel pomocí ByRef, kopie matice je odeslána do adresního prostoru Excel. Po spuštění procedury Excel kopie matice předány zpět klientovi. Přestože nepovoluje pro předávání argumenty pomocí ByRef out proces serveru, není velmi efektivní. Na druhou stranu při použití automatizace v procesu serveru (dynamické knihovny (DLL)) a předat argument ByRef, to je velmi efektivní od žádné zařazovací je provedeno. Server používá stejné matice v paměti jako klient. To je možné, protože server spustí ve stejném prostoru adresu jako klient.

Z důvodu zařazovací s server mimoprocesová například Excel je efektivnější předat matice ByVal namísto ByRef. Tímto způsobem je předán do aplikace Excel pouze jednu kopii a Excel nemá předat kopii klienta. Matice ByVal předat maker aplikace Excel, musíte definovat parametr v maker aplikace Excel jako proměnná varianty. Viz poznámky pod čarou C výše v tomto článku příklad.

Ukázkové procedury jazyka

Následující ukázka Microsoft Visual Basic pro Applications Sub postupy ukazují, jak předat Excel matice. První dva postupy ukazují, jak naplnit předáním matici oblast listu oblast buněk na listu. Třetí postup ukazuje, jak předat matici maker aplikace Excel.

S každou příkladu jsou použity následující deklarace:
OPTION EXPLICIT
Soukromé oExcel As Object
Soukromé xlBook jako objekt
Soukromé xlSheet jako objekt
Předávání 1 rozměrového Array rozsah sešit:
   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
				
předávání 2 rozměrového Array rozsah sešit:
   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
				
předávání Array jako argument makro Excel:
   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
				
The AcceptArray procedury v rámci modulu uvnitř C:\MyBook.xls následujícímu:
   Option Explicit

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

Odkazy

Další informace o matic a Excel naleznete v následujících článcích znalostní báze Microsoft Knowledge Base:
166342Xl97: Pole Maximální velikost v aplikaci Microsoft Excel 97

153307Postupy: Makra Microsoft Excel převzít parametry volání

153090Jak PASS Array jazyka do sešitu Excel
Další informace o získání nápovědy s jazyka pro aplikace naleznete v následujícím článku databáze Microsoft Knowledge Base:
163435VBA: Programové prostředky pro Visual Basic pro aplikace

Vlastnosti

ID článku: 177991 - Poslední aktualizace: 29. března 2007 - Revize: 3.6
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 95a
  • Microsoft Excel 5.0c
  • Microsoft Office 2000 Developer Edition
Klíčová slova: 
kbmt kbautomation kbinfo KB177991 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:177991

Dejte nám zpětnou vazbu

 

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