| |
Fortgeschrittene ProgrammierungDateien Konsolidieren | | | Autor: Fabio1991 | Datum: 07.08.14 17:48 |
| 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.
Ich habe einen Watch auf die beiden variablen sPfad und sDatei gesetzt und bei der Ausführung der des Makro mit Dateien aus dem Netzwerk werden den variablen keine Werte übergeben. Woran kann das liegen?
Hat jemand eine Idee wie ich diesen Fehler eliminieren kann? Bin mit meinem Latein wirklich am Ende
Vielen Dank im Voraus
Fabian
Beitrag wurde zuletzt am 07.08.14 um 17:50:28 editiert. | |
Re: Dateien Konsolidieren | | | Autor: Blackbox | Datum: 11.08.14 18:07 |
| Hi,
mal abgesehen davon, dass ich bei zwei möglicherweise unterschiedlichen Tabellen niemals mit offset arbeiten würde (das kann nie stimmen!) stellt sich die Frage: Wo genau tritt der Fehler auf?
Draufgesehen, und du bezeichnest dich als Fortgeschrittener: Warum verwendest du eigentlich kein DAO?
Die Aufgabe würde ich mit SQL lösen. | |
Re: Dateien Konsolidieren | | | Autor: eierlein | Datum: 11.08.14 18:31 |
| Fabio1991 schrieb:
Zitat: | | Ich habe einen Watch auf die beiden variablen sPfad und sDatei gesetzt und bei der Ausführung der des Makro mit Dateien aus dem Netzwerk werden den variablen keine Werte übergeben. Woran kann das liegen?
| |
Was steht in vFileToOpen(i)? 0 | |
Re: Dateien Konsolidieren | | | Autor: Fabio1991 | Datum: 15.08.14 12:59 |
| Hallo zusammen,
@Blackbox:
Es funktioniert ja auf der "Desktopversion" alles wunderbar, deßhalb sehe ich keinen Grund von der Excelversion abzuweichen zumal ich weiß das alle Dateien die konsolidiert werden sollen komplett identisch aufgebaut sind. Und warum es im fortgeschrittenen Forum steht? Weil ich denke das es keine Frage ist die ein Einsteiger auch nur annähernd beantworten kann.
@eierlein:
Im vFileToOpen steht der gesamte Pfad zur Datei der dann in den variablen in Dateinamen und den Pfad aufgeteilt wird. Habe es eben nochmal überprüft, dieser Pfad wird auch in der "Netzwerkversion" zu vFiletoOpen zugewiesen, der Fehler tritt erst bei den varialen sPfad und sDatei auf.
Vielen Dank im Voraus | |
Re: Dateien Konsolidieren | | | Autor: eierlein | Datum: 15.08.14 14:00 |
|
Zitat: | | Im vFileToOpen steht der gesamte Pfad zur Datei | |
Dann kann's nur an DIR$ liegen.
Versuch' mal:
For i = 1 To UBound(vFileToOpen)
sDatei = Mid$(vFileToOpen(i), InStrRev(vFileToOpen(i), "\") + 1)
sPfad = Left$(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1) 0 | |
Re: Dateien Konsolidieren | | | Autor: Fabio1991 | Datum: 15.08.14 17:26 |
| Auf jeden Fall schonmal vielen vielen Dank.
Generell klappt es jetzt auch aus dem Netzwerk Nur wenn ich das Makro zum ersten Mal laufen lassen, kommt immer die Fehlermeldung "Type missmatch" danach klappt es. Eine Idee was es sein kann? Hatte bisher noch keine zeit das zu prüfen. Aber vielleicht fällt euch ja auf die schnelle noch was ein.
Vielen Dank | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats sevZIP40 Pro DLL
Zippen und Unzippen wie die Profis!
Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|