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

Daten auslesen

Daten auslesen
11.03.2015 09:39:17
Kilian
Hallo liebe Gemeinde,
mein Ziel ist es, aus verschiedenen Excel-Files Immer die selben Daten auszulesen. Hierfür habe ich mir, über verschiedene Internet Beiträge, ein Makro zusammengeschustert.
Es wird ein Ordner ausgewählt, und alle Files in diesem Ordner werden nach einander geöffnet und geschlossen. In der ersten Stufe habe ich nur werte aus Sheet(1) genommen. Das hat wunderbar funktioniert. Jetzt kommt aber hinzu, dass jede Datei unterschiedlich viele Sheets enthält und ich benötige Werte aus allen Sheets, die mit "P0" beginnen.
Somit habe ich in den Do While - Loop noch eine For Each - Schleife gebaut, um jede einzelne File nach worksheets zu durchsuchen, die mit "P0" beginnen.
Leider öffnet das Makro jetzt nur noch alle Files, ohne Werte in die Konsolidierungsdatei einzufügen. Nachdem die letzte Datei geöffnet wurde, hört das Makro auf.
Ich nehme an, das über ws.name = "P0" gesuchte worksheet (ws) wird nicht richtig deklariert oder so?
Vielen Dank für eure Hilfe, bereits im Voraus,
viele Grüße, Kilian
Sub Daten_kopieren()
Dim AppShell As Object
Dim BrowseDir As Variant
Dim strVZ As String
Dim Dateiname As String
Dim irow As Long
Dim wb As Object, wb2 As Object
Dim sDatei As String
Dim ws As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Set wb = ActiveWorkbook
Set AppShell = CreateObject("Shell.Application")
Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17)
On Error Resume Next
strVZ = BrowseDir.items().Item().Path
If strVZ = "" Then Exit Sub
MsgBox strVZ
On Error GoTo 0
Dateiname = Dir(strVZ & "\*.xls*")
Do While Dateiname  ""
Set wb2 = Workbooks.Open(Filename:=strVZ & "\" & Dateiname)
wb2.Activate
For Each ws In wb2.Worksheets
If ws.Name = "P0" Then
irow = wb.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0).Row
wb.Sheets(1).Cells(irow, 1) = Dateiname
wb.Sheets(1).Cells(irow, 2).Value = _
wb2.ws.Range("K50").Value
wb.Sheets(1).Cells(irow, 3).Value = _
wb2.ws.Range("K51").Value
wb.Sheets(1).Cells(irow, 4).Value = _
wb2.ws.Range("K52").Value
wb.Sheets(1).Cells(irow, 5).Value = _
wb2.ws.Range("K53").Value
wb.Sheets(1).Cells(irow, 6).Value = _
wb2.ws.Range("K48").Value
wb2.Close False
End If
Next ws
Dateiname = Dir()
Set wb2 = Nothing
Loop
Application.ScreenUpdating = False
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten auslesen
11.03.2015 09:51:31
yummi
Hallo Kilian,
du bearbeitest nur noch die Sheets im workbook die P0 heissen, also Tabellenblätter die mit P0 beginnen und weitere Zeichen enthalten werden übersprungen.
Mach es so
anstatt

If ws.Name = "P0" Then
so

If Instr(1, ws.Name, "P0", vbTextCompare) = 1 Then
dann kriegst du wieder alle die mit P0 beginnen
Gruß
yummi

AW: Daten auslesen
11.03.2015 10:07:00
Kilian
Hallo yummi,
vielen Dank! Das klappt schonmal super.
Den Dateiname trägt er mir noch ein, in die Konsolidierungsdatei.
wb.Sheets(1).Cells(irow, 1) = Dateiname
Allerdings stoppt er bei der Nachfolgenden Zeile mit der Meldung, LZ-Fehler 438, Objekt unterstützt diese Eigenschaft oder Methode nicht.
wb.Sheets(1).Cells(irow, 2).Value = _
wb2.ws.Range("K30").Value
Kann er mit "ws" nichts anfangen?
vg Kilian

Anzeige
AW: Daten auslesen
11.03.2015 10:14:01
yummi
Hallo Kilian,
richtig. so würde er ja auf das Sheet vom Sheet zugreifen wollen und das gibt es nicht.
ich nehme mal an wb2 ist vom Typ Worksheet dann nur so wb2.Range...
Gruß
yummi

AW: Daten auslesen
11.03.2015 10:20:16
Kilian
Klasse!!!
Es funktioniert! :)
Vielen vielen Dank!

AW: Daten auslesen
11.03.2015 10:24:49
Kilian
Noch eine Anmerkung von mir selbst, für den Fall irgend wer hat mal ein ähnliches Problem:
wb2.close muss natürlich nach die "For-Each-Schleife", sonst schließt er das WB bevor er das zweite Sheet überhaupt suchen kann.
Danke nochmal.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige