Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1312to1316
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
Inhaltsverzeichnis

Viele Dateien auslesen OHNE öffnen

Viele Dateien auslesen OHNE öffnen
20.05.2013 01:39:37
Dietmar
Hallo zusammen,
habe folgenden Code, der auch recht zufriedenstellend funktioniert.
Diese liest fest definierte Zellen aus und überträgt sie Zeile für Zeile in das Auswertungssheet *Auswertung_KW20_2013_02*
Mein Problem:
Alle auszuwertenden Datein werden zunächst geöffnet und dann ausgelesen.
Bei ca. 2000 Dateien dauert das ca. 12 Minuten.
Meine Frage:
Kann man den Code anpassen, so dass die Dateien NICHT GEÖFFNET werden müssen?
Ich denke dann sollte es wesentlich schneller gehen.
Vielen Dank
LG Dietmar
Sub Auswerten()
Dim wkbAktives As Workbook
Dim wkbAuswertung As Workbook
Dim DokumentName As String
Set wkbAuswertung = Workbooks("Auswertung_KW20_2013_02.xls")
Dim ZeilenCounter As Integer
ZeilenCounter = 56
Dim file As Variant
file = Dir(ThisWorkbook.Path & "\Kalenderwoche20*.xls")
While (file  "")
Set wkbAktives = Workbooks.Open(ThisWorkbook.Path & "\" & file)
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 1).Value =
wkbAktives.Sheets(1).Range("B5")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 1).Value =
wkbAktives.Sheets(1).Range("B5")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 2).Value =
wkbAktives.Sheets(1).Range("B10")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 3).Value =
wkbAktives.Sheets(1).Range("B13")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 4).Value =
wkbAktives.Sheets(1).Range("G78")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 5).Value =
wkbAktives.Sheets(1).Range("G79")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 6).Value =
wkbAktives.Sheets(1).Range("G80")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 7).Value =
Application.WorksheetFunction.Sum(wkbAktives.Sheets(1).Range("D155:D174"))
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 8).Value =
Application.WorksheetFunction.Sum(wkbAktives.Sheets(1).Range("D176:D193"))
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 9).Value =
Application.WorksheetFunction.Sum(wkbAktives.Sheets(1).Range("D155:D344"))
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 10).Value =
wkbAktives.Sheets(1).Range("I78")
wkbAuswertung.Sheets(1).Cells(ZeilenCounter, 11).Value =
wkbAktives.Sheets(1).Range("I345")
'Schließe aktive Datei ohne zu speichern
wkbAktives.Close (False)
'Wähle nächste Datei
file = Dir
'Setze den Zeilen Zeiger eins weiter
ZeilenCounter = ZeilenCounter + 1
Wend
ThisWorkbook.Save
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Viele Dateien auslesen OHNE öffnen
20.05.2013 08:01:06
Tino
Hallo,
sind die Dateien immer gleich aufgebaut?
Kannst Du mal eine oder zwei Beispieldatei hochladen (evtl. als zip File) die ausgelesen werden sollen?
Gruß Tino

AW: Viele Dateien auslesen OHNE öffnen
20.05.2013 09:54:05
Oberschlumpf
Hallo Dietmar
Ich hab mir mal die Mühe gemacht, OHNE eine oder mehrere Bsp-Dateien von dir, einen Code zu entwickeln.
OK, das ist mein Problem - ich hätt es ja auch sein lassen können :-)
Wenns aber nich passt, mag ich nich weiter korrigieren - dann ist es dein Problem ;-)
Hier also erst mal meine Idee:
https://www.herber.de/bbs/user/85409.xls
Speicher diese Datei in das Verzeichnis, in dem auch deine ca. 2000 anderen Dateien gespeichert sind.
Mein Code geht davon aus, dass in allen ca. 2000 Dateien der Tabellenblattname um den es geht, immer der gleiche Name ist.
ganz wichtig!
Du musst folgendes beachten:
mein Code muss wissen, wie die Tabelle heisst, in der die Werte stehen, die du auslesen willst
deswegen steht im Code der Begriff TABELLENNAME
Du musst also im Code immer dann, wenn du TABELLENNAME liest, an dessen Stelle genau den Blattnamen eintragen, um den es in deinen ca 2000 Dateien geht

Ich hätte das natürlich auch tun können. Aber wie? Ich weiß ja nicht, wie die Tabelle heißt, um die es geht, weil du es nicht verraten hast ;-)
Deswegen mein Tipp: Wenn du mal wieder Fragen hast, zeig uns immer mindestens eine Bsp-Datei
und noch mal gaaaanz wichtig!!!
du musst deiner Auswertungsdatei ein Tabellenblatt hinzufügen; mit dem Namen "Hilfstab"
das ist erforderlich, weil es zumindest meines Wissens nicht möglich ist, Funktionen wie SUMME auf nicht geöffnete Dateien anzuwenden.
aus dem Grund müssen zuerst auch die Werte einzeln ausgelesen werden, aus denen später für deine Spalten 7,8,9 die Summenwerte übertragen werden sollen.
und da ich nicht weiß, ob ich eine Hilfsspalte in deiner Auswertungstabelle hätte nutzen können, muss die Zusatztabelle mit dem Namen "Hilfstab" sein.

Du kannst natürlich auch meine Datei als deine zukünftige Auswertungsdatei nutzen. Da ist das Zusatzblatt "Hilfstab" ja schon vorhanden.
Und sollte es dich stören, kanst du es auch dauerhaft ausblenden. Der Code würde trotzdem funktionieren.
So, das Fettgedruckte soll nicht wie "schreien" wirken, wie es von vielen interpretiert wird.
Ich hab es deswegen fett formatiert, weil diese 2 Absätze wirklich, wirkich wichtig sind, und von dir beachtet werden müssen.
Ach ja, der Code an sich ist auch fast durchgängig von mir dokumentiert.
puhhhh... :-)
Viel Text!
MIT Bsp-Datei wäre es bestimmt weniger Text gewesen.
Hilfts denn?
Ciao
Thorsten

Anzeige
An Tino und Thorsten ...
20.05.2013 10:48:20
Dietmar
Guten Morgen zusammen,
DANKE!
Tino:
Ja, die Tabellen sind alle exakt gleich aufgebaut und der Dateiname beginnt immer mit 'Kalenderwoche...' Auch das Sheet(1) hat immer die gleiche Bezeichnung (jedenfalls für jede Kalenderwoche).
Thorsten:
Ganz lieben Dank für Deine klasse Engagement und die damit verbundene Mühe! und vor allen Dingen für die tollen Kommentierungen.
Ich werde das nun mal austesten und mich dann melden.
Der Ansatz ist jedenfalls sehr vielversprechend; zumal es tatsächlich so ist, dass ich den Namen des Sheets ja schnell mit Strg + h im Makro ersetzen könnte.
Was ich noch klären muss, ist der Umstand, ob der Original ein weiteres Sheet ('HILFSTAB') verträgt. Derzeit existiert immer nur ein Sheet.
Da die Dateien bereits in einem Verarbeitungsprozess in Richtung Access im Einsatz sind, muss ich das zunächst klären.
Falls das geht, wäre es easy, weil ich die Datei dann zukünftig mit einem zusätzlichen Sheet versehen würde. Ich denke, dass Dein Code auch laufen würde, wenn das Hilfstab-Sheet ausgeblendet werden kann; vllt. sogar mit veryhidden. Grund: Die Datei wird auch von DAU's bedient :-)
Also wie gesagt, ich melde mich.
Werde dann auch mal eine Beispieldatei hochladen.
Euch nun noch einen erholsamen (wenn schon nicht sonnigen) Pfingstmontag.
LG Dietmar
Anzeige

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige