XL: Obmedzenia prechádzajúcich polia do programu Excel pomocou automatizácie

Preklady článku Preklady článku
ID článku: 177991 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok popisuje obmedzenia pri prechode cez polia na Pracovné hárky programu Microsoft Excel a makrá, pomocou automatizácie. Ak tieto obmedzenia sú prekročené, mô?ete dosta run-time chyby v kóde automatizácie.

DALSIE INFORMACIE

Spoločnosť Microsoft poskytuje príklady programovacieho základňa, bez záruky buď vyjadrenej alebo implicitnej záruky, vrátane, ale nie výlučne, implicitných záruk obchodovateľnosti a vhodnosti na konkrétny účel. Tento článok predpokladá, že ovládate predvádzaný programovací jazyk a nástroje na vytváranie a ladenie procedúr. Microsoft podporu odborníkov môže pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy vašim špecifickým potrebám.
Ak máte obmedzené programovania skúsenosti, budete chcieť kontaktovať Microsoft Certified Partner alebo Microsoft poradenských služieb. Pre viac informácií, navštívte týchto webových lokalít spoločnosti Microsoft:

Microsoft certifikované partneri- https://partner.Microsoft.com/Global/30000104

Poradenské služby Microsoft- http://support.Microsoft.com/GP/advisoryservice

Ďalšie informácie o možnosti podpory, ktoré sú k dispozícii a o tom, ako kontaktovať spoločnosť Microsoft, navštívte nasledujúcu webovú lokalitu spoločnosti Microsoft:http://support.Microsoft.com/default.aspx?scid=FH;EN-US;CNTACTMS Pri prechode polia pomocou programu Microsoft Excel Automatizácia, platia tieto obmedzenia, v závislosti od verzie programu Excel a či ste sa prechádza pole rozsah pracovného hárka, alebo ako argument makro. Pozri vhodné poznámky pod čiarou nasledujúca tabuľka 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 čiarou

Odpoveď:

Maximálny počet prvkov v poli je približne 6550. Ak tento limit prekročíte, zobrazí sa jedno alebo obe nasledujúce chybové hlásenia:
Pamäte
1005: Nepodarilo sa nastaviť vlastnosť hodnota triedy Range
Maximálna počet prvkov v poli, ktoré môžete prejsť do programu Excel pomocou programu Excel Transponovať funkcia je 4095. Ak tento limit prekročíte, zobrazí sa nasledujúce chybové hlásenie:
Chyba spustenia "1004":
Transponovať spôsob aplikácie trieda zlyhala
B:

Maximálny počet prvky pole je 4095. Ak tento limit prekročíte, môže sa zobraziť nasledujúce chybové hlásenie:
Chyba spustenia "1004":
Spustiť spôsob aplikácie trieda zlyhala
Poznámka: Pri prechode viacrozmerný pole môžu nie zobrazí chybové hlásenie, ale programu Excel makro sa nespustí, ak celkový počet prvkov presahuje 4095.

C:

Pri definovaní parameter poľa v programe Excel makra, musí byť definované ako premennej Variant alebo môžete dostávať chybové hlásenie keď sa pokúsite spustiť makro pomocou automatizácie:
Chyba spustenia "1004":
Makro sa nedá nájsť<macro name=""><b00></b00></macro>
Pre napríklad Predpokladajme, že názov makra v programe Excel je AcceptArray. Tu je Príklad: ako pole musí byť definovaná v programe Excel makra:
   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álny počet prvkov v poli je 5461. Ak Tento limit prekročíte, zobrazí sa jedno z nasledujúcich chybových hlásení:
Chyba spustenia "1004":
Transponovať metóda Aplikácie triedy zlyhala
- alebo -
Chyba spustenia "1005":
Nepodarilo sa nastaviť Vlastnosť hodnota triedy Range
E:

Maximálna počet prvkov v poli je 5461. Ak tento limit prekročíte, zobrazí sa nasledujúce chybové hlásenie:
Chyba spustenia "1004":
Spustenie metódy aplikácie triedy zlyhala
F:

Maximálna počet prvkov v poli je limitované dostupnou pamäťou alebo programu Excel maximálna veľkosť pracovného hárka (65 536 riadkov X 256 stĺpcov). Avšak maximálny počet prvky pole, ktoré sa môžete prejsť do programu Excel pomocou programu Excel transponovať funkcia je 5461. Ak tento limit prekročíte, zobrazí nasledovná chyba Správa:
Chyba spustenia "13":
Nesúlad typov
G:

Maximálny počet prvkov v poli je obmedzená iba na základe dostupnej pamäte. Tiež, nemáte definovať parametra ako Variantu premennej v programe Excel makra. Avšak, ak chcete prejsť pole ByVal, parameter musí definovať ako premennej Variant ako v príklade v Poznámka pod čiarou c skôr v tomto článku. Dostanete run-time chyba 13, "typ Nesúlad"chyba, ak nedefinujete premennej ako Variant.

H:

Pri prechode argument ByRef out proces automatizácie servera, napríklad program Excel, zoraďovacích údajov prebieha medzi automatizácie radič (alebo klienta) a server pretože beží v samostatných procesov. Toto znamená, že keď pole prepúšťa do programu Excel pomocou ByRef, kópiu poľa zaslať priestor adries programu Excel. Po Excel postup beží, kópiu pole sa vracia späť klienta. Hoci to neumožňuje prechodu argumenty pomocou ByRef na server mimo proces, nie je veľmi efektívne. Na druhej strane, pri používaní v procese automatizačný server (dynamic-link knižnica (DLL)) a prejdete argument ByRef, je to veľmi účinný od č radenie prebieha. Server používa rovnaké pole v pamäti ako klient. To je možné, pretože server beží v tom istom adresovom priestore ako klient.

Z dôvodu zoraďovacích so serverom z procesu, ako Excel, je efektívnejšie prejsť pole ByVal namiesto z ByRef. Týmto spôsobom, iba jedna kópia prechádza do programu Excel a Excel nemá prejsť späť kópiu klientovi. Prejsť pole ByVal na makro programu Excel, musíte definovať Parameter v makro programu Excel ako premennej Variant. Pozri poznámku pod čiarou c skôr v Tento článok ako príklad.

Vzorky Visual Basic postupy

Nasledujúce vzorky jazyka Microsoft Visual Basic pre aplikácie Sub postupy ukazujú, ako preniesť polia do programu Excel. Prvé dva postupy ukazujú ako na vyplnenie rozsah buniek na pracovnom hárku zadan?m poľa na pracovný hárok rozsah. Tretí procedúra popisuje spôsob prejsť pole na makro programu Excel.

Tieto vyhlásenia, ktoré sa používajú s každý príklad:
Možnosť explicitné
Súkromné xlApp ako objekt
Súkromné xlBook ako objekt
Súkromné xlSheet ako objekt
Prechádzajúcej 1-rozmerné pole do rozsahu pracovného hárka:
   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
				
Prechádzajúcej 2-dimenzionálne pole do rozsahu pracovného hárka:
   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
				
Absolvovanie poľa ako Argument na makro programu 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
				
AcceptArray postup v rámci modul vnútri C:\MyBook.xls podobá nasledujúcemu hláseniu:
   Option Explicit

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

ODKAZY

Ďalšie informácie o polia a program Excel nájdete v nasledujúce články v databáze Microsoft Knowledge Base:
166342 Xl97: Maximálna veľkosť poľa v programe Microsoft Excel 97

153307 HOWTO: Call Microsoft Excel makrá že prijať parametre

153090 Ako prejsť Visual Basic Array pracovnému hárku programu Excel
Ďalšie informácie o získanie Pomocníka programu Visual Basic for Aplikácie, prečítajte si nasledujúci článok v databáze Microsoft Knowledge Base:
163435 VBA: Programovanie zdroje pre Visual Basic for Applications
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 177991 - Posledná kontrola: 18. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Office 2000 Developer Edition
Kľúčové slová: 
kbautomation kbinfo kbmt KB177991 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:177991

Odošlite odozvu

 

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