Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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

Dateien auslesen

Dateien auslesen
VBA_Neuling
Halle Excel Freunde,
ich habe ein Problem und will dieses mit VBA lösen. Leider bin ich darin ein Leihe.
Habe mir schon etwas zusammen gegoogelt. Aber jetzt komm ich nicht weiter.
Folgendes Problem habe ich:
Ich habe einen Ordner mit jeweils 52 (52 Monate) Excel Dateien in denen ich die Wöchentliche Produktivität erfasse.
Nun will ich diese Daten in einer neuen Exceldatei erfassen.
Hierzu muß ich verschiedene Zellen, die nicht zusammenhängen addieren.
Als Beispiel:
Maschine Nr. 1252 Steht in der Zeile Nr.6 nun will ich aus jeder Datei hiervon die Zelle K6,S6,o6 usw. addieren, danach die nächste Maschine mit den Zellen K7,S7,o7 usw.
Hier mein derzeitiger stand als VBA, es wäre klasse wenn ihr mir weiter helfen könntet!!
Ich bin soweit, das ich bereits aus allen Dateien die erste Zelle ausgelesen bekomme, aber die anderen fehlen mir noch.
Um die weiten Maschinen auszulesen, habe ich den Code immer wiederholt und nur die zellangaben geändert, gibt es hier eine elegantere Metode um die zu lösen, z.B. mit einer Loop Funktion?
Private Sub CommandButton1_Click()
Dim Dateiname As String
Dim Verz As String
Dim dat As String
Dim Blatt As String
Dim Zelle As String
Dim Gesamt As Variant
Dim Wert As Variant
Application.ScreenUpdating = False
Zelle = "A1" 'Hier Zelle angeben
Blatt = "Tabelle1" 'Hier Tabelle angeben
Verz = "C:\Dokumente und Einstellungen\Burkhard Held\Eigene Dateien\test" 'Hier Verzeichnis  _
angeben
dat = "*.xls" 'Hier Datei angeben
If Right(Verz, 1)  "\" Then Verz = Verz & "\"
Dateiname = Dir$(Verz & dat)
Do While Dateiname  ""
Wert = ExecuteExcel4Macro("'" & Verz & "[" & _
Dateiname & "]" & Blatt & "'!" & _
Range(Zelle).Range("A1").Address(, , xlR1C1))
Gesamt = Gesamt + Wert
Dateiname = Dir$()
Loop
Application.ScreenUpdating = True
Range("E10") = Gesamt
End Sub
für eure Hilfe will ich mich schon einmal bedanken,
Grüße der Gast Burki!!!

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Dateien auslesen
14.09.2010 22:11:26
Josef

Hallo Burkhard,
deine Angaben sind ein wenig mager. Ich habe mal vorausgesetzt, das in deiner "gesamt"-Tabelle
in Spalte A ab Zeile 6 die Maschinennummern stehen und in Spalte B die Summe(n) ausgegeben werden sollen.
Die Summen werden immer aus der Zeile gebildet in der sie stehen. Also in Zeile 6 wird die Summe aus Zeile 6 der 52 Dateien ausgegeben.
Der Code ist ungetestet!

Private Sub CommandButton1_Click()
  Dim strPath As String, strFile As String, strSheet As String
  Dim lngRow As Long, lngLast As Long, lngIndex As Long, dblResult As Double
  Dim vntRange() As Variant, vntRet As Variant
  
  
  On Error GoTo ErrExit
  
  Application.ScreenUpdating = False
  
  vntRange = Array("K", "S", "O") 'auszulesende Spalten - Anpassen!
  
  strPath = "C:\Dokumente und Einstellungen\Burkhard Held\Eigene Dateien\test"
  
  strPath = IIf(Right(strPath, 1) <> "\", strPath & "\", strPath)
  
  strSheet = "Tabelle1"
  
  lngLast = Cells(Rows.Count, 1).End(xlUp).Row
  
  strFile = Dir(strPath & "*.xls*", vbNormal)
  
  Do While strFile <> ""
    For lngRow = 6 To lngLast
      dblResult = 0
      For lngIndex = 0 To UBound(vntRange)
        vntRet = GetValue(strPath, strFile, strSheet, CStr(vntRange(lngIndex) & lngRow))
        If IsNumeric(vntRet) Then dblResult = dblResult + vntRet
      Next
      Cells(lngRow, 2) = Cells(lngRow, 2) + dblResult
    Next
    strFile = Dir
  Loop
  
  
  ErrExit:
  Application.ScreenUpdating = True
End Sub

Private Function GetValue(path As String, file As String, _
    sheet As String, ref As String)

  Dim arg As String
  
  If Right(path, 1) <> "\" Then path = path & "\"
  
  
  arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
    Range(ref).Range("A1").Address(, , xlR1C1)
  
  GetValue = ExecuteExcel4Macro(arg)
End Function

Gruß Sepp

Anzeige
AW: Dateien auslesen
15.09.2010 20:49:53
Burkhard
Hallo Sepp,
danke für deine schnelle Antwort.
Ich habe den Code mal ausprobiert, leider passiert nichts.
Ich will mal versuchen das Problem etwas anders zu erklären.
Ich habe einen Dateipfad mit 52 einzelnen Exceldateien
z.B:
C:\Dokumente und Einstellungen\Burkhard Held\Eigene Dateien\test
Eine Datei sieht ungefähr so aus:
J K R S
Soll Summe Mon. / Ist Summe Mon. / Soll Summe Die. / Ist Summe Die.
6 1252 1200 1332 1100 1320
7 1309
8 usw.
9 usw.
10 usw. 11 usw. 12 usw.
Diese Datei wir für jede Woche neu gemacht, sieht aber immer gleich aus. nur die Werte ändern sich.
Ich möchte für jede Maschine einzeln die werte für ein Jahr aufsummieren und in eine Zelle schreiben, siehe Beispiel:
A B Maschinen Nr Jahresmenge
1 1252 ?
2 1909 ?
3 usw ?
4 usw ?
5 usw ?
Noch besser würde es werden, wenn ich die Wochenwerte jeder Datei in eine Zelle schreiben könnte,
also folgendermaßen
A B C Maschinen Nr KW1 KW2
1 1252 ? ?
2 1909 ?
3 usw ?
4 usw ?
5 usw ?
der Code, den ich dargestellt hatte, der Liest mir aber aus jeder Datei nur den Wert vom Montag aus und nicht die anderen Tage.
Also ich hoffe ich konnte mein Problem etwas besser darstellen.
Grüße Burkhard
Anzeige
AW: Dateien auslesen
15.09.2010 21:16:52
Josef

Hallo Burkhard,
ich schrieb ja "deine ANgaben sind etwas mager...".
"Eine Datei sieht ungefähr so aus:" - ungefähr nützt gar nichts, weil du den Code dann warscheinlich nicht anpassen kannst.
Lade doch mal eine der Wochendateien hoch und füge ein Tabellenblatt ein, das so aussieht wie die Gesamttabelle aussehen soll.

Gruß Sepp

Anzeige
AW: Dateien auslesen
16.09.2010 21:01:48
Burkhard
Hallo Sepp,
danke für dein Interesse, es fällt mir leider etwas schwer zu erklären was ich erreichen möchte.
Aber schön das du mir helfen willst.
dann will ich mal die Dateien hochladen, ich hab die Excelsheets in eine Datei gepackt, da ich auch nur eine Hochgeladen bekommen hab.
Das Excelsheet Auslastung fertigung ist normalerweise eine Einzelne Datei, habe ich aber auch dazu geschrieben.
Die anderen beiden sheets, sind die Dateien in denen ich die Datren einlesen möchte, das erste ist die einfachere Version, das 2te ist die bessere. Wäre schön wenn man diese auch hinbekommen könnte.
Also ich hoffe ich konnte es so besser erklären,
Danke und Grüße Burkhard

Die Datei https://www.herber.de/bbs/user/71577.xls wurde aus Datenschutzgründen gelöscht


Anzeige
AW: Dateien auslesen
16.09.2010 21:13:14
Josef

Hallo Burkhard,
die Auswertung soll ja über die KW erfolgen, dazu müsste man (ich) noch wissen, wie die Dateinamen aufgebaut sind, bzw. wie man aus dem Dateinamen auf das Jahr und die KW schliessen kann.

Gruß Sepp

AW: Dateien auslesen
16.09.2010 21:37:49
Burkhard
Hallo Sepp,
na das wird ja jetzt richtig schnell!!!
Es ist jeweils nur ein Jahr in einem Ordner gespeichert, so kann ich das Jahr durch den Dateipfad festlegen.
Ich möchte auch immer nur 1 Jahr in eine Auswertungsdatei laden, sonst würde es zu unübersichtlich werden.
In dem Makro von mir, steht er richtig für das Jahr 2010
M:\DLT-FSS\Servicemeeting\Produktivität\2010
Die Kalenderwochen kann ich durch den Dateinamen Schliessen.
z.B.: Dateiname Kalenderwoche 18
Produktivität_Edelstahl_KW18
Hoffe so kann ich dir helfen
Grüße Burkhard
Anzeige
AW: Dateien auslesen
18.09.2010 00:06:04
Josef

Hallo Burkhard,
dein Tabellenaufbau ist für eine einfache Auswertung eher suboptimal.
Probier mal diese Datei https://www.herber.de/bbs/user/71591.xls .
Die Einfache Auswertung würde ich per Formel aus der Wochenauswertung ziehen.

Gruß Sepp

AW: Dateien auslesen
20.09.2010 18:15:04
Burkhard
Hallo Sepp,
ich hab die datei heute ausprobiert und kann mich garnicht oft genug bedanken!!!
Es funzt einfach SUPER!!!!!!!!!!!!!!!!!!!!!!!!!!!
Besten dank, es ist einfach schön zu erleben wie unproblematisch jemanden heute noch geholfen wird!!!!
Vielen Dank und Grüße Burkhard
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige