25.12.2014, 18:42
Hallo liebes Forum !
Ich hätte wieder ein Anliegen:
Ich möchte aus mehreren Dateien einige Daten auslesen, aber möchte um Zeit zu sparen diese nicht öffnen müssen.
Ich habe ein Makro von Beverly, das im Grunde bestens funktioniert, aber ist leider hier nicht anwendbar, da die auszulesenden Daten der Quelldatei leider in nicht fixen, sondern variablen Zeilen stehen können. Die Spalte ist aber fix.
Ich habe schon mit loLetzte und loErste versucht, aber das funktioniert nicht.
Außerdem wollte ich auch einen zusammenhängenden Datenblock auslesen, wenn das überhaupt möglich ist.
Hier das Makro von Beverly:
Hat jemand eine Idee, wie das zu lösen wäre ?
Vielen Dank für Eure wertvolle Hilfe.
Liebe Grüße aus Innsbruck
Helmut
Ich hätte wieder ein Anliegen:
Ich möchte aus mehreren Dateien einige Daten auslesen, aber möchte um Zeit zu sparen diese nicht öffnen müssen.
Ich habe ein Makro von Beverly, das im Grunde bestens funktioniert, aber ist leider hier nicht anwendbar, da die auszulesenden Daten der Quelldatei leider in nicht fixen, sondern variablen Zeilen stehen können. Die Spalte ist aber fix.
Ich habe schon mit loLetzte und loErste versucht, aber das funktioniert nicht.
Außerdem wollte ich auch einen zusammenhängenden Datenblock auslesen, wenn das überhaupt möglich ist.
Hier das Makro von Beverly:
Code:
geschrieben von: Beverly (IP bekannt)
Datum: 05.02.08 07:22
hier eine Möglichkeit, ohne die Arbeitsmappen zu öffnen
Sub daten_uebernehmen()
Dim strFile As String ' Variable für die Arbeitsmappe
Dim strPath As String ' Variable für den Pfad
Dim loLetzte As Long ' Variable für die lettze belegte Zelle
' Bidschirmaktualisierung aus
Application.ScreenUpdating = False
strPath = "C:\Test\" ' Zuweisen Pfadname; Pfad bitte anpassen!
strFile = Dir(strPath & "*.xls") ' Name der ersten Arbeitsmappe im Pfad ermitteln
' Schleife über alle im Verzeichnis vorhandenen Arbeitsmappen
Do While strFile <> ""
' Name der Arbeitsmappe muss verschieden von der Mappe mit dem Code sein (damit diese nicht berücksichtigt wird)
' die If-Anweisung ist nur erforderlich, falls Mappe mit dem Code im selben Verzeichnis
If strFile <> ThisWorkbook.Name Then
' letzte belegte Zelel in Spalte A ermitteln
loLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
' die ersten 4 Zeichen des Dateinamen werden in Spalte A geschrieben
Cells(loLetzte + 1, 1) = Left(strFile, 4)
' in Spalte B:D wird die Formel eingetrage, damit ein Bezug zur geschlossenen Arbeitsmappe (Zellen A5, D7 und E8) entsteht
Cells(loLetzte + 1, 2).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!A5"
Cells(loLetzte + 1, 3).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!D7"
Cells(loLetzte + 1, 4).Formula = "='" & strPath & "[" & strFile & "]Tabelle1'!E8"
End If
' Namen der nächsten Arbeitsmappe auslesen
strFile = Dir()
Loop
' Bereich von A1:E bis zur lettzen belegten Zeile kopieren
Range("A1:E" & loLetzte + 1).Copy
' Einfügen nur Werte (Formeln werden durch ihre Werte ersetzt,nur mehr
Werte in den Zellen.
Range("A1:E" & loLetzte + 1).PasteSpecial Paste:=xlPasteValues
' Zwischenablage leeren
Application.CutCopyMode = False
' Bildschirmaktualisierung ein
Application.ScreenUpdating = True
End Sub
Es wird davon ausgegangen, dass die Tabelle, aus der die Daten übernommen werden sollen, Tabelle1 heißt (bei Erfordernis anpassen).
Hat jemand eine Idee, wie das zu lösen wäre ?
Vielen Dank für Eure wertvolle Hilfe.
Liebe Grüße aus Innsbruck
Helmut