shaggy84
Goto Top

per VBA Makro mehrere Excel Dateien auf einmal öffnen - importieren - konsolidieren

Hallo Forum Team,

habe eine direkt Frage für meinen Programmstart.

Ich möchte direkt aus einem bestimmten Ordner mehrere dort verlinkte Excel Dateien öffnen und meiner Excel Datei hin zu fügen.

Normalerweise geschieht dies ja mit dem Code (Auszug):
Application.Dialogs(xlDialogOpen).Show 'öffne Quelldatei  
Worksheets(1).Range("1:65535").Copy 'kopiere alles  
Ziel.Worksheets(2).Activate
Ziel.Worksheets(2).Range("1:65535").PasteSpecial _  
Paste:=xlPasteValues 'fügt Daten in Zieltabelle ein  

Nun sind es aber zig Excel Dateien die alle gleich aufgebaut sind. Ich kann die nicht alle über den Datei öffnen Dialog einzeln öffnen...
Gibt es eine Möglichkeit (nach dem *.* Prinzip) alle Dateien nach und nach automatisch laden zu können?

Grüße

Content-Key: 85648

Url: https://administrator.de/contentid/85648

Printed on: April 26, 2024 at 03:04 o'clock

Member: Shaggy84
Shaggy84 Apr 23, 2008 at 12:41:20 (UTC)
Goto Top
Hallo Administrator Forum,

habe mein Problem jetzt anders gelöst, nämlich mit einer Liste.

Grundvoraussetzung, die Dateinamen sollten möglich einfach sein und sich nicht ständig ändern.

- eine Zelle für den Pfad angelegt
- mehrere Zellen untereinander für den Dateinamen
[- mehrere Zellen daneben untereinander für den Dateityp, in meinem Fall nötig, da sowohl Links *.lnk als auch Dateien *.xls existieren. Hier mit einer Listenfunktion]

Hier der Programmauszug:
'Definitionen  
Pfad = Worksheets(1).Cells(6, 3)
Zaehler = 6 'Anfang der Dateiliste  
Listenende = IIf(IsEmpty(Range("I65536")), Range("I65536").End(xlUp).Row, 65536) 'Ende der Dateiliste  

'Lade aus Liste Datei für Datei ein  
Do Until Zaehler = Listenende + 1
    Worksheets(2).Cells.Clear
    Datei = Worksheets(1).Cells(Zaehler, 9) 'Einlesen des Dateinamens aus Liste  

    'Lese Dateiendung aus Liste  
    If Worksheets(1).Cells(Zaehler, 10) = Worksheets(1).Cells(4, 12) Then  'variables Einlesen der Endung  
        Endung = ".lnk"  
    End If
    If Worksheets(1).Cells(Zaehler, 10) = Worksheets(1).Cells(5, 12) Then
        Endung = ".xls"  
    End If
    
   'erstelle Dateipfad  
    On Error Resume Next
    Dateipfad = Pfad + Datei + Endung
    s = Dir(Dateipfad)
    If s <> "" Then  
    
        Workbooks.Open Pfad + Datei + Endung 'Dateipfadzusammenstellung  
    
       'kopieren  
        Worksheets(3).Activate
        Letzte = IIf(IsEmpty(Range("F65536")), Range("F65536").End(xlUp).Row, 65536)  
        Worksheets(3).Range(Cells(6, 1), Cells(Letzte, 35)).Copy 'Importbereich  

       'einfügen  
        Ziel.Worksheets(2).Activate
        Ziel.Worksheets(2).Range("1:65536").PasteSpecial _  
        Paste:=xlPasteValues 'fügt Daten in Zwischenablage ein  
    
    'Abfangen von Fehlern  
    Else: MsgBox "Datei " & Dateipfad & " existiert nicht! Schreibfehler oder falsche Dateiart?", vbExclamation  
    i = i + 1
End If

    Application.Run "CheckLines"  
    Zaehler = Zaehler + 1
    Workbooks(Datei + Endung).Close SaveChanges:=False 'schließe offene Dateien  
Loop

Achten, dass der Pfad mit einem "\" enden muss. Mit "CheckLines" werden die Dateien in einem weiterem Tabellenblatt untereinander kopiert. Hier werden Sie ja immer wieder überschrieben.

Grüße