Das Archiv des Excel-Forums

Zelle auslesen aus geschlossenen Dateien

Bild

Betrifft: Zelle auslesen aus geschlossenen Dateien
von: Uli

Geschrieben am: 02.10.2003 08:46:33

Hallo,

gibt es eine Möglichkeit das aktive bzw. Starttabellenblatt bei geschlossenen Exceldateien per Makro festzulegen bzw. zu ändern ?

Hintergrund ist, daß ich per Makro aus verschiedenen Exceldateien Zellinhalte auslesen möchte. Grundsätzlich funktioniert dies aus, Problem ist nur, daß die Ursprungsdateien 4 Tabellenblätter beinhalten und der Zellinhalt jeweils aus dem Tabellenblatt "Kalkulation" ausgelesen werden soll.

Das Makro für das Auslesen der Ursprungsdateien in eine Zieldatei habe bereits hier im Forum gefunden ( https://www.herber.de/forum/archiv/196to200/t196400.htm ) und lautet wie folgt:

Option Explicit

Sub Dateiliste()
' erstellt von Hajo Ziplies 25.12.02
' Dateiliste für ein Verzeichnis ohne Unterverzeichnisse
Dim strVerzeichnis As String
Dim StrDatei As String
Dim I As Integer
Dim StrTyp As String
Dim Dateiname As String
strVerzeichnis = "D:\Eigene Dateien\Hajo\"
StrTyp = "*.xls"
Dateiname = Dir(strVerzeichnis & StrTyp)
I = 1
With Workbooks(ThisWorkbook.Name).ActiveSheet
Do While Dateiname <> ""
.Cells(I, 1).Value = Dateiname
Workbooks.Open Filename:=strVerzeichnis & Dateiname
.Cells(I, 2) = Range("B12")
ActiveWorkbook.Close False
I = I + 1
Dateiname = Dir
Loop
End With
End Sub


Problem ist nun, daß grundsätzlich nur der Zellinhalt des zuletzt aktiven Tabellenblatts der geschlossenen Datei ausgelesen wird.

Ich habe versucht, über Anpassung der Zeile´.Cells(I, 2) = Worksheets("Kalkulation").Range("B12")´ ein Tabellenblatt direkt anzusprechen, leider funktioniert dies nicht.

Ich könnte mir auch vorstellen, daß man zuerst ein Makro ablaufen läßt, daß zuerst bei den geschlossenen Dateien das entsprechende Tabellenblatt festlegt bzw. ändert und daraufhin oben beschriebenes Makro.

Für eine Tip wär ich euch Super dankbar.

Uli
Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 09:09:00

Hallo Uli,

dafür empfehle ich Dir diesen Excel4-Lösungsweg per Makro mit zugehöriger Funktion.
In der Variablen 'strSource' wird der Pfad, der Dateiname, der Blattname und die Zelladresse der geschlossenen Datei festgelegt.
Die Bezeichnung 'R6C4' ist die Zelladresse in der geschlossenen Datei; "R6" bedeutet Row (Zeile) 6; "C4" bedeutet Column (Spalte) 4; die Zelladresse in "Normalschreibweise" wäre also "D6". Die Syntax meines Beispiels muss aber eingehalten werden.
Makro und Funktion gehören in ein normales Standard-Modul.

Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function


Sub Uli()
Dim strSource As String
Dim i As Integer
strSource = "'C:\TEMP\[Dateiname.xls]Blattname'!R6C4"
Range("A1").Value = xl4Value(strSource)
End Sub

Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 02.10.2003 09:42:34

Hallo Werner,

leider erfolgt bei der Zeile: ´xl4Value = ExecuteExcel4Macro(strParam)´ die Fehlermeldung ´Laufzeitfehler 1004 Anwendungs- od. objektdefinierter Fehler´!

Woran könnte das liegen ?

Trotzdem, besten Dank schon mal.

Uli


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 09:56:12

Hallo Uli,

aus der Ferne vermute ich, dass wahrscheinlich die Variable 'strSource' nicht richtig belegt ist bzw. die Belegung einen Syntaxfehler aufweist.
Wie Lautet die komplette Zeile 'strSource = ...' in Deinem Makro?


Gruß WernerB.


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 02.10.2003 10:25:59

Hallo Werner,

mein angepaßtes Makro lautet:


Function xl4Value(strParam As String) As Variant
xl4Value = ExecuteExcel4Macro(strParam)
End Function



Sub Uli()
Dim strSource As String
Dim i As Integer
strSource = "'f:\Rechnungswesen\Abschluß\GJ 0203\Quart0403\[B*.xls]Kalkulation'!R13C4"
Range("D13").Value = xl4Value(strSource)
End Sub


Übrigens habe ich zufällig noch eine weitere Lösung gefunden unter: http://www.excel-vba.de/1_bspdateien.htm -> geschlossenemappen.zip. Die Lösung bezieht das Tabellenblatt ein und funktioniert auch recht gut. Die Prozeduren scheinen mir recht kompliziert, also ich blick dort nicht durch, aber Hauptsache es funktioniert.

Deine Lösung ist wesentlich küzer und ein wenig blick ich auch durch, wenn wir jetzt noch den Fehler beseitigen, ist dies auch eine Super Lösung.

Uli


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 11:01:46

Hallo Uli,

also ich bezweifle mal, dass der Name der geschlossenen Datei "B*.xls" lautet. Das Zeichen "*" ist m.W. in einem Dateinamen nicht zulässig.
Beim Laufwerk-Buchstaben "F" würde ich Großschreibung verwenden.

Übrigens: Die Zeile
Range("D13").Value = xl4Value(strSource)
bedeutet, dass in die Zelle "D13" des gerade aktiven Tabellenblattes Deiner Zieldatei der Zellwert aus der geschlossenen Quelldatei eingetragen werden soll.
In Deinem Fall sind beide Zelladressen identisch (D13 = R13C4); ist das Zufall oder Absicht?


Gruß WernerB.


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 02.10.2003 11:36:53

Hallo Werner,

Du hast recht, ich habe das Makro entsprechend angepaßt.

Da nun das Makro läuft, habe ich jetzt jedoch festgestellt, daß mit Deinem Makro lediglich eine geschlossene Datei ausgelesen werden kann, mein Ziel war jedoch eigentlich mehr alle Dateien eines Verzeichnisses auszulesen, wobei der Dateiname und der Zellinhalt aus den jeweiligen Ursprungsdateien in die Zieldateien eingelesen werden.

Mit dem ursprünglichen Makro war dies grundsätzlich auch möglich, Problem war nur, daß das Makro regelmäßig die Zelle des aktiven Tabellenblattes auslaß und nicht eines speziellen Tabellenblattes.

Vielleicht kann man aber Dein Makro entsprechend anpassen ?

Uli


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 13:10:04

Hallo Uli,

ich kann versuchen, Dir eine Lösung zu basteln, wenn Du mir noch folgende Informationen gibst:
- Stehen die geschlossenen Dateien alle in dem Verzeichnis "'F:\Rechnungswesen\Abschluß\GJ 0203\Quart0403\" ?
- Beginnen die gesuchten geschlossenen Dateinamen alle mit dem Buchstaben "B" ?
- Soll in den geschlossenen Dateien immer eine bestimmte Zelle ("D13") ausgelesen werden?
- Wohin (Zelladressen bzw. Spalte X ab Zeile Y) sollen die ausgelesenen Werte geschrieben werden?


Gruß WernerB.


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 02.10.2003 13:43:55

Hallo Werner,

die Dateien befinden Sie alle im Verzeichnis: "F:\Rechnungswesen\Abschluß\GJ0203\Quart0403\", die Dateien fangen mit "B" bzw. "Bewertung" an, und die Zelle "D13" soll jeweils ausgelesen werden. Dabei ist jedoch zu beachten bzw. zu berücksichtigen, daß die Dateien jeweils vier Tabellenblätter enthalten und der Zellinhalt ausschließlich aus der Zelle "D13" des Tabellenblattes "Kalkulation" ausgelesen werden soll.

Zusätzlich müßte noch berücksichtigt werden, daß die Ursprungsdateien Verknüpfungen zu anderen Dateien enthalten und somit vor dem Auslesen aktualisiert werden müssen.

Es wäre schön, wenn man in der Zieltabelle zuerst in Spalte A die Dateinamen und in Spalte B die Zellinhalte aus den Zellen "D13" der Ursprungsdateien aufgelistet bekämme.

Nach der urpsprünglichen Lösung (http://www.excel-vba.de/1_bspdateien.htm )wurden die Dateien geöffnet, dadurch aktualisert, ausgelesen, geschlossen, Wert in Zieldatei geschreiben, und nächste Datei geöffnet..usw. Problem bei dieser Lösung war jedoch, daß ich kein spezielles Tabellenblatt ansprechen konnte.

Bei letzten Lösung, wo ich das Tabellenblatt angeben konnte ( http://www.excel-vba.de/1_bspdateien.htm -> geschlossenmappen.zip ) zeigte sich leider, daß ausschließlich die Werte bzw. der Zellinhalt ausgelesen wurde, jedoch die Ursprungsdateien nicht vorher aktualisiert wurden.

Nicht so einfach !!

Wär Super, wenn Du eine Lösung hinbekommen würdest.

Danke nochmals, Uli


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 14:25:24

Hallo Uli,

diese Lösung sollte funktionieren:


Option Explicit

Sub DateienAuslesen()
Dim fs As FileSearch
Dim Zw As Variant
Dim sPath As String, DatN As String
Dim i As Integer
Dim znr As Byte
Application.ScreenUpdating = False
sPath = "'F:\Rechnungswesen\Abschluß\GJ0203\Quart0403"
Set fs = Application.FileSearch
With fs
.LookIn = sPath
.FileType = msoFileTypeExcelWorkbooks
.Execute
For i = 1 To .FoundFiles.Count
DatN = Right(.FoundFiles(i), Len(.FoundFiles(i)) - Len(sPath) - 1)
If Left(DatN, 9) = "Bewertung" Then
'          MsgBox DatN
Workbooks.Open FileName:=sPath & "\" & DatN, UpdateLinks:=3
Zw = Sheets("Kalkulation").Range("D13")
ActiveWorkbook.Close False
znr = znr + 1
Range("A" & znr).Value = DatN
Range("B" & znr).Value = Zw
End If
Next i
End With
Application.ScreenUpdating = True
End Sub

Gruß WernerB.


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 02.10.2003 15:04:15

Hallo Werner,

leider tut sich gar nichts! Soweit ich da durchblicke, habe ich Pfad, Tabellenblattname, Zelle überprüft, Alternativen ausprobiert, aber leider gibt es weder eine Fehlermeldung noch sonst etwas, seltsam.

Ich habe mal als Beispiel 3 Ursprungsdateiein und eine Zentraldatei beigefügt. Deinen Code habe ich entsprechend angepaßt, aber auch hier funktioniert es nicht.

Kannst Du nochmal drüberschauen.

Danke, Uli


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: WernerB.
Geschrieben am: 02.10.2003 19:45:58

Hallo Uli,

Deine Dateien sind in Deinem letzten Beitrag leider nicht enthalten.

Warum das Makro bei Dir nicht läuft, kann ich aus der Ferne nicht beurteilen.
Bevor ich es in meinen Beitrag übernommen habe, wurde es von mir erfolgreich getestet. Dazu habe ich extra ein paar Dateien angelegt, deren Name mit "Bewertung" beginnt; nur einen anderen Pfad habe ich verwendet.

Überprüfe doch mal Deinen Pfad ganz akribisch, ob der so richtig geschrieben ist; in einem Beitrag hast Du z.B. den Ordner "\GJ 0203\" mit einem Leerzeichen versehen, in einem anderen ohne.

Einen kleinen – vielleicht entscheidenden – Fehler habe ich gerade eben noch entdeckt:
Hier hat sich ein Hochkomma eingeschlichen, das da nicht hineingehört:
- Falsch: sPath = "'F:\Rechnungswesen\Abschluß\GJ0203\Quart0403"
- Richtig: sPath = "F:\Rechnungswesen\Abschluß\GJ0203\Quart0403"

Bei der Belegung der Variablen 'sPath' darf am Ende kein Schrägstrich ("\") stehen.
Zusätzlich könntest Du irgendwo am Programm-Anfang auch noch diese Programmzeile eintragen:
ChDir "F:\"

Mehr fällt mir dazu leider nicht ein.


Gruß WernerB.


Bild


Betrifft: AW: Zelle auslesen aus geschlossenen Dateien
von: Uli
Geschrieben am: 07.10.2003 09:39:28

hallo Werner,

ich habe nochmal fleissig ausprobiert und zufällig bin ich auf eine Möglichkeit gestossen.

Wenn ich die Zeile:

Zw = Sheets("Kalkulation").Range("D13")

erweitere bzw. ändere in:

Zw = ActiveWorkbook.Worksheets("Kalkulation").Range("D13").Value

funktioniert das Auslesen der Zellen.

Ich möchte mich nochmals ganz herzlich für Deine Hilfe bedanken.

Uli


 Bild

Excel-Beispiele zum Thema " Zelle auslesen aus geschlossenen Dateien"

Mehrfachauswahl aus ListBox auslesen download Dateien aus Listbox auslesen und öffnen download
Bereich in RefEdit-Element eingeben und auslesen download Auslesen der Arbeitsmappeneigenschaften download
UserName aus der Windows-Registry auslesen download Eintrag aus der Win.ini auslesen download
Einzelnes Zeichen aus einer InputBox-Eingabe auslesen download Ausgewählte Arbeitsblätter auslesen download
Mehrfachauswahl in ListBox auslesen download Auslesen der Mausposition download
Festplatten-Seriennummer auslesen download Cursorposition in der Entwicklungsumgebung auslesen download
Bedingte Formatierung auslesen download Computername auslesen download
Werte aus Zellbereich in eine Matrix übernehmen und auslesen download Auslesen des ausgewählten Optionsfeldes in einer UserForm download
Datum in Registry eintragen und auslesen download Mit Drehfeld durch UserForm-TextBoxes blättern und Daten auslesen download
Werte aus einem nicht zusammenhängendem Bereich auslesen download Zahlenstring mit Formel auslesen und Fehlermeldung verhindern download
Arbeitsmappen- und Tabellenblattnamen auslesen download Aus einer Reihe von 10-minütigen Messungen h-Mittelwerte auslesen download
UserForm-Elemente auslesen download Umgebungsvariable aus der autoexec.bat auslesen download
Gültigkeitsauswahl über VBA auslesen download Namen eines ausgewählten Bereiches auslesen download
Bildschirmauflösung auslesen download Aus mehrspaltiger UserForm-ListBox Werte der 1. Spalte auslesen download
VBE-Komponenten der aktiven Arbeitsmappe auslesen download Positionen einzelner Zeichen in langer Zeichenfolge auslesen download
Rechnungsnummer in Registry eintragen, auslesen, löschen download In Array einlesen, sortieren, auslesen download
Tabellenblattinhalt in seqentielle Textdatei ein- und auslesen download Plattenspeicher auslesen download
Ein- und Auslesen der Seiteneinrichtung / Orientierung download Alle geöffneten Tasks auslesen download
Fußzeile ein- und auslesen download Daten in benutzerdefinierten Datentyp ein- und auslesen download
Daten in zweidimensionales Array ein- und in Tabelle auslesen download Auslesen der aktuellen Mausposition download
Installierte Drucker auslesen download Titel einer HTML-Seite auslesen download
Auslesen von Schnittstellenwerten download Textdateien auslesen und in Werte in Zellen eintragen download
Grafik-Dateinamen aus Zelle auslesen und HTML-Datei erstellen download Aus einem String mit Datumsangabe das Jahr auslesen download
Wert aus Optionsfelder in verschiedenen Frames auslesen download Gefilterte Daten in Array ein und aus Array auslesen download
Aus GetOpenFilename-Dialog eine Mehrfachauswahl auslesen download Daten aus geschlossenen Arbeitsmappen listen download
Werte aus geschlossenen Arbeitsmappen einlesen download Alle Dateien im Verzeichnis öffnen download
Dateien listen download 400 leere Textdateien anlegen download
XL-Dateien in UserForm listen download XL5/7-Dateien nach XL8 konvertieren download
Excel-Dateien eines Ordners listen download Alle Dateien ab einem bestimmten Datum listen download
Alle Dateien eines Verzeichnisses drucken download Textdateien verbinden download
Serie von Dateien in das XL5/7-Format konvertieren download Verzeichnisbaum aufrufen und Dateien in ListBox auflisten download
Dateien einer Ordnerliste in einer Tabelle zusammenstellen download Daten aus allen Dateien eines Verzeichnisses zusammenführen download
Hyperlinks zu allen Excel-Dateien eines Verzeichnisses erstellen download Dateien in einem Verzeichnis und Unterverzeichnissen suchen download
XL-Dateien aus Haupt- und Unterverzeichnissen einlesen download Die Eigenschaft "Stichwort" in allen Dateien eines Ordners ändern download
Textdateien vergleichen und Unterschiede dokumentieren download Löschen von Dateien beim Schließen einer Arbeitsmappe download
Grafikdateien suchen download Erste Blätter aus allen Dateien eines Verzeichnisses sammeln download
Von allen Arbeitsblättern der Mappe HTML-Dateien anlegen download Werte nach Gruppen aufteilen und in gesonderten Dateien speichern download
Fragen aus Textdateien in UserForm-Label einlesen download Text in Textdateien suchen und Fundzeilen in Tabelle ausgeben download
Alle Dateien löschen, die älter als 30 Tage sind download Dateien mit Angabe des Dateidatums mit Hyperlink listen download
Dateien listen und gekennzeichnete öffnen download UserForm-TextBoxes-Texte in Textdateien speichern download
Tabellenblattinhalte in getrennten Textdateien speichern download Dateien listen und Blätter in neue Arbeitsmappe kopieren download
Bei Doppelklick Textdateien in Editor öffnen download Dateiliste mit allen xl-Dateien und Hyperlinks erstellen download
Aufruf von Textdateien protokollieren download Textdateien mit einer Zeile in Tabelle einlesen download
Alle Textdateien eines Verzeichnisses importieren download Dateien öffnen, Verknüpfungen aktualisieren, speichern, schießen download
Dateien suchen download Dateien mit bestimmtem Inhalt suchen download