Tipp 0454
|
Daten aus einer Arbeitsmappe einlesen (Formeln)
|
|
|
Autor/Einsender: Datum: |
|
Angie 22.05.2005 |
|
Entwicklungsumgebung: |
|
Excel 2000 |
|
|
Die wohl einfachste Art mit Excel-eigenen Mitteln aus einer geschlossenen
Arbeitsmappe Daten in ein Tabellenblatt einzulesen, dürfte die Verwendung einer Formel sein.
|
|
Wert einer einzelnen Zelle einlesen |
|
Mit der Formula-Eigenschaft wird zunächst der Zielzelle eine Formel zugewiesen, die
Pfad, Dateiname, Tabellenname und die Adresse der auszulesende Zelle beinhaltet, und anschließend
in einen "festen" Wert umgewandelt (Value-Eigenschaft), um die Verknüpfung zur
geschlossenen Quell-Arbeitsmappe/Tabelle aufzuheben.
|
|
|
With ActiveWorkbook.Worksheets(1).Range("A1")
.Formula = "='c:\temp\[Mappe1.xls]Tabelle1'!A3"
.Value = .Value
End With
|
|
|
Werte eines Bereichs einlesen |
|
Um einen Bereich aus einem Tabellenblatt in einer geschlossenen Arbeitsmappe einzulesen,
eignet sich die FormulaArray-Eigenschaft, mit der eine Matrixformel zugewiesen
werden kann. Auch hier wird den Zellen im Zielbereich zunächst eine Formel zugewiesen und
anschließend die Verknüpfung zur geschlossenen Quell-Arbeitsmappe/Tabelle aufgehoben.
Um unerwünschte Ergebnisse zu vermeiden, sollte die Dimension (Anzahl Zeilen und Spalten) des
Zielbereichs identisch mit der des Quellbereichs sein.
|
|
|
With ActiveWorkbook.Worksheets(1).Range("A2:B2")
.FormulaArray = "='c:\temp\[Mappe1.xls]Tabelle1'!A3:B3"
.Value = .Value
End With
|
|
|
|
Lese-/schreibgeschützte Arbeitsmappen
|
Ist die angegebene Arbeitsmappe mit einem Lese-/Schreibkennwort geschützt, wird beim Zuweisen
der Formel ein Excel-interner Dialog für die Eingabe des Passworts angezeigt. Egal ob ein
gültiges Passwort eingegeben wird, und egal ob der Dialog mit 'OK' oder 'Abbrechen' geschlossen wird,
es tritt m. W. leider kein auffangbarer Laufzeitfehler auf.
|
Tabellenblattname
|
Existiert das angegebene Tabellenblatt in der Arbeitsmappen nicht, wird beim Zuweisen der
Formel ein Excel-interner Auswahldialog mit einer Liste der in der Arbeitsmappe enthaltenen
Tabellenblätter angezeigt. Wird im Auswahldialog ein Tabellenblatt ausgewählt, so wird die
Quelle in der Matrixformel entsprechend angepasst, wird der Dialog jedoch mit 'Abbrechen' geschlossen,
tritt ein Laufzeitfehler auf.
|
Anzahl Formeln in einem Tabellenblatt
|
Die Anzahl der möglichen Formeln in einem Tabellenblatt, die auf ein anderes Tabellenblatt verweisen,
ist ab Excel 2000 auf 65472 begrenzt, in Excel 97 auf 32764 (?). Das heißt also, dass der
einzulesende Bereich nicht zu groß dimensioniert sein darf.
|
Anzahl der Zeichen in einer Matrixformel (FormulaArray)
|
Die Obergrenze der Anzahl der Zeichen in einer Matrixformel (FormulaArray) liegt laut
Microsoft bei 255 Zeichen! Probleme könnten beispielsweise dann auftreten, wenn die einzulesenden
Arbeitsmappen in einer Ordnerstruktur liegen, die lange Dateipfade ergeben, und/oder auch wenn in
der Formel eine IF-Abfrage enthalten ist, und die externe Adresse zwei Mal angegeben werden muss.
|
|
|
.FormulaArray = "=IF('c:\temp\[Mappe1.xls]Tabelle1'!" & _
"A3:B3="""","""",'c:\temp\[Mappe1.xls]Tabelle1'!A3:B3)"
|
|
|
Abhilfe schafft hier das Verschieben der einzulesenden Dateien in eine Ordnerstruktur, die kürzere
Dateipfade ergibt, und/oder aber auch, in dem man den
kurzen Pfad
ermittelt (wie in guten alten Zeiten, z. B. C:\DOKUME~1)
und diesen in der Formel zuweist. Eine andere Möglichkeit wäre, die Formel in mehreren Teilen
zuzuweisen.
|
Weitere Infos zum Thema 'Formeln' können der Excel-Hilfe und den 'Links zum Thema'
entnommen werden.
|
|
|
|
|
|