vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Dateien 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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