Geschlossene Dateien auslesen
04.05.2017 10:49:09
Christian
ich benötige etwas Unterstützung, weil ich den Wald vor lauter Bäumen nicht mehr sehe.
Option Explicit
Const strSheetQ As String = "Daten" ' Die Tabelle wird ausgelesen
Const strSheetZ As String = "Tabelle1" ' Die Tabelle in dieser Datei
Const strCellQ1 As String = "A1" ' Die Zelle wird ausgelesen
Public Sub c_DB_Date3()
Dim stCalc As Integer
Dim strDir As String
Dim objFSO As Object
Dim objDir As Object
On Error GoTo Fin
With Application
.ScreenUpdating = False 'Ansicht wird für den Benutzer ausgeschaltet für den Zeitraum _
der Bearbeitung
.AskToUpdateLinks = False 'Automatische Aktualisierung der Arbeitsmappe eingestellt
.EnableEvents = False 'Ereignisse werden deaktiviert
stCalc = .Calculation
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Set objFSO = CreateObject("Scripting.FileSystemObject")
' strDir = ThisWorkbook.Path ' Datei im gleichen Ordner wie Auswertungsdateien
strDir = "D:\Daten\Test\Datenbank\" ' Fester Ordner vorgegeben
Set objDir = objFSO.GetFolder(strDir)
'dirInfo objDir, "*.xls", True ' Mit Unterordner
dirInfo objDir, "*.xlsx"
Fin:
With Application
.ScreenUpdating = True
.AskToUpdateLinks = True
.EnableEvents = True
.Calculation = stCalc
.DisplayAlerts = True
End With
Set objDir = Nothing
Set objFSO = Nothing
End Sub
Public Sub dirInfo(ByVal objCurrentDir As Object, ByVal strName As String, _
Optional ByVal blnTMP As Boolean = False)
Dim objWorkbook As Workbook
Dim strFormula As String
Dim lngLastRow As Long
Dim varTMP As Variant
For Each varTMP In objCurrentDir.Files
If varTMP.Name Like strName And varTMP.Name ThisWorkbook.Name Then
With ThisWorkbook.Worksheets(strSheetZ)
lngLastRow = IIf(Len(.Cells(.Rows.Count, 11)), _
.Rows.Count, .Cells(.Rows.Count, 11).End(xlUp).Row) + 1
With .Cells(lngLastRow, 11) 'In Zeile K einfügen
.Formula = "='" & Mid(varTMP.Path, 1, _
InStrRev(varTMP.Path, "\")) & "[" & _
Mid(varTMP.Path, InStrRev(varTMP.Path, "\") + 1) & "]" & _
strSheetQ & "'!" & strCellQ1
End With
' .UsedRange.Value = .UsedRange.Value
End With
End If
Next varTMP
If blnTMP = True Then
For Each varTMP In objCurrentDir.SubFolders
dirInfo varTMP, strName
Next varTMP
End If
Set objWorkbook = Nothing
End Sub
Es geht um das fett markierte strCellQ1. Die Zellen auf welche in der Zieldatei zugegriffen werden sollen, stehen in Spalte I3 bis I100.- Datei 1: Pfad (C3) / Dateiname (D3) / Blattname (E3) / letzte Zeile die ausgegeben werden _
soll (I3) / Ausgabe in K3
- Datei 2: Pfad (C4) / Dateiname (D4) / Blattname (E4) / letzte Zeile die ausgegeben werden _
soll (I4) / Ausgabe in K4
- etc.
Ich habe mich schon daran versucht ein Array zu erstellen, aber ich kriege trotzdem den Bezug nicht auf den Inhalt der Zeilen I3:I100 gelenkt. Wenn mir dabei jemand helfen könnte wäre ich sehr dankbar. Das Skript macht ansonsten genau das was es soll, nur leider fehlt die Flexibilität.Anzeige