Hallo,
ich erstelle gerade ständig neue Tabellen und möchte daraus später 5 Zellen auslesen und in eine andere Datei eintragen lassen ohne alle Dateien zu öffnen. Dazu hatte ich ein wenig gegoogelt und bin auf exel4macro gestoßen. Allerdings habe ich es nicht geschafft die Funktion in eine Schleife einzubauen, so dass sie funktioniert. Die Anzahl der Dateien ist erstmal nicht genau definiert, also wird in der Schleife abgefragt ob der Dateiname in der Zelle vorhanden ist und so lange eingelesen bis alle Zeilen durch sind, die einen Dateinamen enthalten. Zellen ohne Dateinamen enthalten nur ".xlsx".
In den einzelnen Dateien möchte ich immer auf die fixen Zellen Y1433 - Y1437 zugreifen. Der Dateiname steht jeweils in der Spalte B. Der Dateipfad wird in Zelle C2 angegeben. Die 5 Werte werden in die Spalten G-L geschrieben und starten für die erste Datei in Zeile 7.
Ich habe folgenden Code benutzt:
01. Private Function GetValue(pfad, datei, blatt, zelle)
02.
03.
04.
05. Dim arg As String
06.
07.
08. If Right(pfad, 1) <> "\" Then pfad = pfad & " \"
09. If Dir(pfad & datei) = "" Then
10. GetValue = "datei Not Found"
11. Exit Function
12. End If
13.
14.
15. arg = "'" & pfad & "[" & datei & "]" & blatt & "'!" & Range(zelle).Range( "A1" ).Address(, , xlR1C1)
16.
17.
18. GetValue = ExecuteExcel4Macro(arg)
19.
20. End Function
Um einen einzelnen Wert aus einer angegebenen Zelle auszulesen, verwenden Sie folgendes Makro.
01. Sub Zelle_auslesen()
02.
03. Dim pfad As String , datei As String , blatt As String , zelle As String
04.
05.
06. pfad = "F:\Excel\Beispiele"
07. datei = "geschlossene Mappe2.xls"
Den Dateinamen müsste ich aus Spalte B auslesen. In Zeile 7 beginnt die tabelle mit dem ersten Datensatz.
08. blatt = "Tabelle1"
09. bezug = "A2"
Kann es sein, dass an dieser Stelle ein fehler drin steckt? Oben wird die variable zelle dimensioniert und hier steht plötzlich was von bezug?!
10.
11.
12. ActiveCell.Value = GetValue(pfad, datei, blatt, bezug)
13.
14. End Sub
|