Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
316to320
316to320
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zelle auslesen aus geschlossenen Dateien

Zelle auslesen aus geschlossenen Dateien
02.10.2003 08:46:33
Uli
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

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 09:09:00
WernerB.
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).
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 09:42:34
Uli
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
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 09:56:12
WernerB.
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.
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 10:25:59
Uli
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
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 11:01:46
WernerB.
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.
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 11:36:53
Uli
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
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 13:10:04
WernerB.
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.
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 13:43:55
Uli
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
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 14:25:24
WernerB.
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.
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 15:04:15
Uli
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
AW: Zelle auslesen aus geschlossenen Dateien
02.10.2003 19:45:58
WernerB.
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.
Anzeige
AW: Zelle auslesen aus geschlossenen Dateien
07.10.2003 09:39:28
Uli
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige