Dateien Konsolidieren
Betrifft: Dateien Konsolidieren
von: Fabian Pennart
Geschrieben am: 24.07.2014 13:10:22
Hallo zusammen,
ich benutze ein Makro um Dateien in einer "Masterfile" zu konsolidieren. Die Dateien sind alle gleich aufgebaut beinhalten aber verschiedene Daten.
Ich nutze folgendes Makro:
Sub Zusammenführen()
Dim i As Long
Dim sPfad As String
Dim sDatei As String
Dim vFileToOpen As Variant
Dim lngLZ As Long
Dim blnÜberschrift As Boolean
Dim iCalc As Integer
vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
If Not IsArray(vFileToOpen) Then Exit Sub
iCalc = Application.Calculation
On Error GoTo ENDE:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For i = 1 To UBound(vFileToOpen)
sDatei = Dir(vFileToOpen(i))
sPfad = Left(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1)
With Tabelle1.Range("A1")
.Formula = "=LOOKUP(2,1/('" & sPfad & "[" & sDatei & "]Tabelle1'!$A:$A<>""""),ROW('" _
_
& sPfad & "\[" & sDatei & "]Tabelle1'!$A:$A))"
lngLZ = .Value
End With
With Tabelle1
If blnÜberschrift Then
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ - 1, 7).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
Else
blnÜberschrift = True
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 7).Formula = _
"='" & sPfad & "[" & sDatei & "]Tabelle1'!A1"
End If
End With
Call StatusBalken(Int((i / UBound(vFileToOpen)) * 100))
Next
With Tabelle1.UsedRange
.Copy
.PasteSpecial xlPasteValues
.Rows(1).Delete
End With
ENDE:
Application.EnableEvents = True
Application.Calculation = iCalc
Application.ScreenUpdating = True
If Err Then MsgBox Err.Description, , "Fehler: " & Err
End Sub
Starte ich die Konsolidierung mit Dateien von meinem Desktop, läuft das Makro wunderbar und ich habe keien Probleme.
Nun möchte ich aber die Dateien aus einem Ordner aus dem Netzwerk holen. Ich habe alle Zugriffe und den Pfad habe ich vorher "gemapt"
Trotzdem kommt dabei immer: Fehler 52 Bad file name or number.
Hat jemand eine Idee wie ich diesen Fehler eliminieren kann?
Vielen Dank im Voraus
Fabian
Betrifft: AW: Dateien Konsolidieren
von: Born
Geschrieben am: 29.07.2014 10:51:41
Hallo Fabian,
lass mal das Makro im Einzelschritt-Modus durchlaufen. In welcher Zeile kommt dann der Fehler?
Viele Grüße,
M. Born
Betrifft: AW: Dateien Konsolidieren
von: Fabian Pennart
Geschrieben am: 29.07.2014 11:07:05
Hi M.Born
die Fehler kommt im Teil:
For i = 1 To UBound(vFileToOpen)
sDatei = Dir(vFileToOpen(i))
sPfad = Left(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1)
nach sDatei = Dir(vFileToOpen(i))
Beste Grüße
Fabian
Betrifft: AW: Dateien Konsolidieren
von: Born
Geschrieben am: 29.07.2014 11:17:13
Versuche mal, mit dem Debugger Dir den Wert von sDatei anzeigen zu lassen. Dort sollte der Pfadname drinstehen. Wenn die Variable keinen String enthält, dann erzeugt die Instr() eine Fehlermeldung.
Betrifft: AW: Dateien Konsolidieren
von: Fabian Pennart
Geschrieben am: 29.07.2014 12:31:31
Hatte jetzt einen Watch sowohl auf sDatei als auch sPfad. In der Tat, werden die Werte über das gemappte Netzwerk nicht an sDatei und sPfad übergeben. Wenn ich alles auf meinem Desktop liegen habe klappt es nach wie vor wunderbar.
Gibt es irgendeinen Möglichkeit dieses Problem zu umgehen/zu lösen?
Wie ich in meinem ersten Beitrag geschrieben habe habe ich alle Berechtigungen und Möglichkeiten aufn dieses Netzwerkordner zuzugreifen.
Betrifft: AW: Dateien Konsolidieren
von: Born
Geschrieben am: 29.07.2014 13:06:59
Du kannst bei Application.GetOpenFilename noch eine Prüfung einbauen, dass der Wert ungleich False ist. Nur wenn dort auf "Öffnen" geklickt wird, wird ein String (oder ein Array von Strings) zurückgeliefert, mit denen Du weiterarbeiten kannst.
Betrifft: AW: Dateien Konsolidieren
von: Fabian Pennart
Geschrieben am: 29.07.2014 13:27:17
Ich öffne aber immer die gleichen Excel Files. Das Problem scheint also daran zu liegen, dass ich diese aus dem Netzwerk öffnen möchte.
Gibt es dafür irgendwas spezielles? Ich will das Makro ja nicht beenden ohne die Dateien importiert zu haben
Betrifft: AW: Dateien Konsolidieren
von: Born
Geschrieben am: 29.07.2014 14:21:12
Du könntest alternativ die Datei(en) über Application.Dialogs(xlDialogOpen).Show öffnen, den Namen und Pfad über ActiveWorkbook.Path ermitteln und sie dann wieder schließen.
Das Öffnen von Dateien vom Netz sollte sich gegenüber dem von lokalen Dateien nicht unterscheiden.
Betrifft: AW: Dateien Konsolidieren
von: Fabian Pennart
Geschrieben am: 29.07.2014 16:24:32
Ich kann aber ja schlecht 200 Datein (Das ist ungefähr die Zahl die am Ende gemerged werden soll) öffnen, mir Pfad und Dateinamen merken und die Dateien wieder schließen. Glaube da stürzt jeder PC ab.
So geht es wunderbar ohne die Files zu öffnen. Ich komme einfach nicht dahinter warum die Dateinamen nicht übergeben werden wenn ich es über das Netzwerklaufwerk versuche...
Betrifft: AW: Dateien Konsolidieren
von: Born
Geschrieben am: 29.07.2014 16:31:38
Eine andere Möglichkeit fällt mir leider auch nicht ein. Ich lasse den Thread mal offen. Viel Erfolg...
Beiträge aus den Excel-Beispielen zum Thema "Dateien Konsolidieren"