XL: Περιορισμοί του διαβίβαση πίνακες στο Excel με αυτοματισμό

Μεταφράσεις άρθρων Μεταφράσεις άρθρων
Αναγν. άρθρου: 177991 - Δείτε τα προϊόντα στα οποία αναφέρεται το συγκεκριμένο άρθρο.
Ανάπτυξη όλων | Σύμπτυξη όλων

Σε αυτήν τη σελίδα

Περίληψη

Αυτό το άρθρο περιγράφει τους περιορισμούς στα διαβίβαση πινάκων σε φύλλα εργασίας του Microsoft Excel και οι μακροεντολές χρησιμοποιώντας αυτοματοποίηση. Εάν είναι υπέρβαση αυτών των περιορισμών, ενδέχεται να λάβετε σφάλματα χρόνου εκτέλεσης του κώδικά σας αυτοματισμού.

Περισσότερες πληροφορίες

Η Microsoft παρέχει παραδείγματα προγραμματισμού μόνο για επεξήγηση, χωρίς να παρέχει καμία εγγύηση, είτε σιωπηρή είτε ρητή, περιλαμβανομένων, ενδεικτικά, των σιωπηρών εγγυήσεων εμπορευσιμότητας ή/και καταλληλότητας για συγκεκριμένο σκοπό. Αυτό το άρθρο προϋποθέτει ότι είστε εξοικειωμένοι με τη γλώσσα προγραμματισμού που παρουσιάζεται, καθώς και με τα εργαλεία που χρησιμοποιούνται για τη δημιουργία και τον εντοπισμό σφαλμάτων διαδικασιών. Οι μηχανικοί υποστήριξης της Microsoft μπορούν να σας εξηγήσουν τη λειτουργικότητα μιας συγκεκριμένης διαδικασίας, αλλά δεν θα τροποποιήσουν αυτά τα παραδείγματα για να παράσχουν πρόσθετες λειτουργίες, ούτε θα δημιουργήσουν διαδικασίες, για να καλύψουν τις συγκεκριμένες ανάγκες σας.
Εάν δεν έχετε μεγάλη εμπειρία προγραμματισμού, ίσως χρειαστεί να επικοινωνήσετε με κάποιον πιστοποιημένο συνεργάτη της Microsoft (Microsoft Certified Partner) ή να χρησιμοποιήσετε τις συμβουλευτικές υπηρεσίες Microsoft Advisory Services. Για περισσότερες πληροφορίες, επισκεφθείτε αυτές τις τοποθεσίες της Microsoft στο Web:

Πιστοποιημένοι συνεργάτες της Microsoft -https://partner.microsoft.com/global/30000104

Συμβουλευτικές υπηρεσίες της Microsoft-http://support.Microsoft.com/GP/advisoryservice

Για περισσότερες πληροφορίες σχετικά με τις επιλογές υποστήριξης που είναι διαθέσιμες και τον τρόπο επικοινωνίας με τη Microsoft, επισκεφθείτε την ακόλουθη τοποθεσία της Microsoft στο Web:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSΚατά τη διαβίβαση πινάκων στο Microsoft Excel με αυτοματισμό, ισχύουν οι παρακάτω περιορισμοί, ανάλογα με την έκδοση του Excel και αν διαβίβαση του πίνακα σε μια περιοχή του φύλλου εργασίας ή ως όρισμα σε μια μακροεντολή. Ανατρέξτε στο κατάλληλο υποσημειώσεις μετά από τον πίνακα για λεπτομέρειες.
   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

				

Οι υποσημειώσεις

A:

Ο μέγιστος αριθμός των στοιχείων του πίνακα είναι περίπου 6550. Εάν υπερβαίνει αυτό το όριο, θα λάβετε ένα ή περισσότερα από τα ακόλουθα μηνύματα λάθους:
Η μνήμη δεν επαρκεί (Out of memory)
1005: Δεν είναι δυνατό να οριστεί η ιδιότητα Value της κλάσης Range
Ο μέγιστος αριθμός των στοιχείων του πίνακα που μπορείτε να περάσετε στο Excel χρησιμοποιώντας τη συνάρτηση μετατόπιση του Excel είναι 4095. Εάν υπερβαίνει αυτό το όριο, λαμβάνετε το ακόλουθο μήνυμα λάθους:
Σφάλμα χρόνου εκτέλεσης '1004':
Αντιμεταθέσετε μέθοδος εφαρμογής της κλάσης απέτυχε
B:

Ο μέγιστος αριθμός των στοιχείων του πίνακα είναι 4095. Εάν υπερβαίνει αυτό το όριο, ενδέχεται να λάβετε το ακόλουθο μήνυμα λάθους:
Σφάλμα χρόνου εκτέλεσης '1004':
Εκτελείται η μέθοδος εφαρμογής της κλάσης απέτυχε
ΣΗΜΕΙΩΣΗ: Κατά τη διαβίβαση ενός πολυδιάστατου πίνακα, ενδέχεται να μην λάβετε μήνυμα σφάλματος, αλλά το Excel θα μακροεντολής δεν εκτελούνται όταν ο συνολικός αριθμός των στοιχείων υπερβαίνει 4095.

C:

Κατά τον ορισμό της παραμέτρου πίνακα της μακροεντολής του Excel, αυτή πρέπει να οριστεί ως μια μεταβλητή Variant ή θα λάβετε το ακόλουθο μήνυμα λάθους όταν επιχειρείτε να εκτελέσετε τη μακροεντολή χρησιμοποιώντας αυτοματοποίησης:
Σφάλμα χρόνου εκτέλεσης '1004':
Δεν είναι δυνατή η εύρεση της μακροεντολής<macro name=""> </macro>
Για παράδειγμα, ας υποθέσουμε ότι το όνομα της μακροεντολής σας στο Excel είναι AcceptArray. Ακολουθεί ένα παράδειγμα για το πώς πρέπει να οριστεί στον πίνακα της μακροεντολής του 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:

Ο μέγιστος αριθμός των στοιχείων του πίνακα είναι 5461. Εάν υπερβαίνει αυτό το όριο, λαμβάνετε ένα από τα ακόλουθα μηνύματα λάθους:
Σφάλμα χρόνου εκτέλεσης '1004':
Αντιμεταθέσετε μέθοδος εφαρμογής της κλάσης απέτυχε
- ή -
Σφάλμα χρόνου εκτέλεσης '1005':
Δεν είναι δυνατό να οριστεί η ιδιότητα Value της κλάσης Range
E:

Ο μέγιστος αριθμός των στοιχείων του πίνακα είναι 5461. Εάν υπερβαίνει αυτό το όριο, λαμβάνετε το ακόλουθο μήνυμα λάθους:
Σφάλμα χρόνου εκτέλεσης '1004':
Εκτελείται η μέθοδος εφαρμογής της κλάσης απέτυχε
F:

Ο μέγιστος αριθμός των στοιχείων του πίνακα περιορίζεται από τη διαθέσιμη μνήμη ή το Excel μέγιστο μέγεθος του φύλλου εργασίας (65536 γραμμές X 256 στήλες). Ωστόσο, ο μέγιστος αριθμός των στοιχείων του πίνακα που μπορείτε να περάσετε στο Excel χρησιμοποιώντας το Excel μετατόπιση 5461 είναι συνάρτηση. Εάν υπερβαίνει αυτό το όριο, λαμβάνετε το ακόλουθο μήνυμα λάθους:
Σφάλμα χρόνου εκτέλεσης '13':
TYPE MISMATCH
G:

Ο μέγιστος αριθμός των στοιχείων του πίνακα περιορίζεται μόνο από τη διαθέσιμη μνήμη. Επίσης, δεν χρειάζεται να καθορίσετε την παράμετρο ως μια μεταβλητή Variant της μακροεντολής του Excel. Ωστόσο, εάν θέλετε να μεταβιβάσετε πίνακα ByVal, πρέπει να ορίσετε την παράμετρο ως μια μεταβλητή Variant, όπως στο παράδειγμα στην υποσημείωση Γ παραπάνω σε αυτό το άρθρο. Εάν δεν καθορίσετε τη μεταβλητή ως ένα όρισμα τύπου Variant, θα λάβετε ένα σφάλμα χρόνου εκτέλεσης 13, σφάλμα "Ασυμφωνία τύπων".

H:

Όταν η διαβίβαση ByRef όρισμα σε μια αυτοματισμού εκτός διεργασίας διακομιστή, όπως το Excel, παράταξης των δεδομένων πραγματοποιείται μεταξύ του αυτοματισμού ελεγκτή (ή του υπολογιστή-πελάτη) και ο διακομιστής από τη στιγμή που εκτελούνται σε ξεχωριστές διαδικασίες. Αυτό σημαίνει ότι όταν ένας πίνακας μεταβιβάζεται στο Excel χρησιμοποιώντας ByRef, αποστέλλεται ένα αντίγραφο του πίνακα για το χώρο διευθύνσεων του Excel. Μετά την εκτέλεση της διαδικασίας του Excel, ένα αντίγραφο του πίνακα περνά πίσω στο πρόγραμμα-πελάτη. Παρόλο που αυτό επιτρέπεται για τη διαβίβαση ορισμάτων με ByRef σε ένα διακομιστή εκτός διεργασίας, δεν είναι πολύ αποτελεσματική. Από την άλλη πλευρά, όταν χρησιμοποιώντας ένα διακομιστή αυτοματοποίησης εντός διεργασίας (μια βιβλιοθήκη δυναμικής σύνδεσης (DLL)) και να διαβιβάσετε ένα όρισμα ByRef, αυτό είναι πολύ αποτελεσματική εφόσον παράταξης δεν πραγματοποιείται. Ο διακομιστής χρησιμοποιεί το ίδιο πίνακα στη μνήμη με τον πελάτη. Αυτό είναι δυνατό, επειδή ο διακομιστής λειτουργεί στον ίδιο χώρο διεύθυνσης με τον πελάτη.

Εξαιτίας της παράταξης με ένα διακομιστή εκτός διεργασίας, όπως το Excel, είναι πιο αποτελεσματικό να περάσει ο πίνακας ByVal αντί για ByRef. Με αυτόν τον τρόπο, ένα μόνο αντίγραφο διαβιβάζεται στο Excel και το Excel δεν διαθέτει για να μεταβιβάσετε το αντίγραφο του προγράμματος-πελάτη. Για να μεταβιβάσετε έναν πίνακα ByVal μιας μακροεντολής του Excel, πρέπει να ορίσετε την παράμετρο της μακροεντολής του Excel ως μια μεταβλητή Variant. Δείτε υποσημείωση Γ παραπάνω σε αυτό το άρθρο, για παράδειγμα.

Δείγματα διαδικασιών της Visual Basic

Το ακόλουθο δείγμα της Microsoft Visual Basic για εφαρμογές Sub διαδικασίες σας δείχνουν πώς μπορείτε να διαβιβάσετε πίνακες στο Excel. Οι πρώτες δύο διαδικασίες δείχνουν πώς να συμπληρώσετε μια περιοχή κελιών σε ένα φύλλο εργασίας, μεταφέροντας έναν πίνακα σε μια περιοχή του φύλλου εργασίας. Η τρίτη διαδικασία σας δείχνει πώς να μεταβιβάσετε έναν πίνακα μιας μακροεντολής του Excel.

Με κάθε παράδειγμα χρησιμοποιούνται οι τις ακόλουθες δηλώσεις:
Option Explicit
Ιδιωτική xlApp ως αντικείμενο
Ιδιωτική xlBook ως αντικείμενο
Ιδιωτική xlSheet ως αντικείμενο
Μεταφορά μιας διάστασης 1 πίνακα σε μια περιοχή του φύλλου εργασίας:
   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 πίνακα σε μια περιοχή του φύλλου εργασίας:
   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
				
Διαβίβαση ενός πίνακα ως ένα όρισμα σε μια μακροεντολών του 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 μέσα σε μια λειτουργική μονάδα στο εσωτερικό C:\MyBook.xls μοιάζει με το ακόλουθο:
   Option Explicit

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

Αναφορές

Για περισσότερες πληροφορίες σχετικά με πίνακες και το Excel, ανατρέξτε στα ακόλουθα άρθρα της Γνωσιακής Βάσης της Microsoft:
166342XL97: Μέγιστο μέγεθος πίνακα στο Microsoft Excel 97

153307ΔΙΑΔΙΚΑΣΙΕΣ: Κλήση μακροεντολές του Microsoft Excel που ανάληψη παράμετροι

153090Διαδικασία βήμα ενός πίνακα Visual Basic σε ένα φύλλο εργασίας του Excel
Για περισσότερες πληροφορίες σχετικά με τη λήψη Βοήθειας με χρήση της Visual Basic for Applications, ανατρέξτε στο ακόλουθο άρθρο της Γνωσιακής Βάσης της Microsoft:
163435VBA: Προγραμματισμός πόρων για τη Visual Basic for Applications

Ιδιότητες

Αναγν. άρθρου: 177991 - Τελευταία αναθεώρηση: Κυριακή, 18 Σεπτεμβρίου 2011 - Αναθεώρηση: 5.0
Οι πληροφορίες σε αυτό το άρθρο ισχύουν για:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Office 2000 Developer Edition
Λέξεις-κλειδιά: 
kbautomation kbinfo kbmt KB177991 KbMtel
Μηχανικά μεταφρασμένο
ΣΗΜΑΝΤΙΚΟ: Αυτό το άρθρο είναι προϊόν λογισμικού μηχανικής μετάφρασης της Microsoft και όχι ανθρώπινης μετάφρασης. Η Microsoft σάς προσφέρει άρθρα που είναι προϊόντα ανθρώπινης αλλά και μηχανικής μετάφρασης έτσι ώστε να έχετε πρόσβαση σε όλα τα άρθρα της Γνωσιακής Βάσης μας στη δική σας γλώσσα. Ωστόσο, ένα άρθρο που έχει προκύψει από μηχανική μετάφραση δεν είναι πάντα άριστης ποιότητας. Ενδέχεται να περιέχει λεξιλογικά, συντακτικά ή γραμματικά λάθη, όπως ακριβώς τα λάθη που θα έκανε ένας μη φυσικός ομιλητής επιχειρώντας να μιλήσει τη γλώσσα σας. Η Microsoft δεν φέρει καμία ευθύνη για τυχόν ανακρίβειες, σφάλματα ή ζημίες που προκύψουν λόγω τυχόν παρερμηνειών στη μετάφραση του περιεχομένου ή χρήσης του από τους πελάτες της. Επίσης, η Microsoft πραγματοποιεί συχνά ενημερώσεις στο λογισμικό μηχανικής μετάφρασης.
Η αγγλική έκδοση αυτού του άρθρου είναι η ακόλουθη:177991

Αποστολή σχολίων

 

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