VBA - Einlesen von xls-Dateien - Codeumstellung

Bild

Betrifft: VBA - Einlesen von xls-Dateien - Codeumstellung
von: WalterK
Geschrieben am: 09.07.2015 12:15:39

Hallo,
mit dem folgenden Code hatte ich immer CSV-Dateien eingelesen, ab jetzt wollte ich damit xls-Dateien einlesen. Die Dateinamen bis strPath = "D:\EXPORTE\" habe ich bereits geändert.
Am Teil ab For intc habe ich noch nichts verändert, meine Versuche den Code umzuschreiben, damit xls-Dateien eingelesen werden haben nicht funktioniert.
Wer kann helfen?
Option Explicit

Sub Import() 'bis 08.07.2015 aus CSV-Dateien, ab 09.07.2015 aus xls-Dateien
    
    Application.ScreenUpdating = False
    
    With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
    .Cursor = xlWait
    End With
    
    
    Sheets("A_Xls_Export").Range("A:BZ").ClearContents 'bis 08.07.2015 Sheets("A_Csv_Export")
    Sheets("B_Xls_Export").Range("A:BZ").ClearContents 'bis 08.07.2015 Sheets ("B_Csv_Export")
    Sheets("C_Xls_Export").Range("A:BZ").ClearContents 'bis 08.07.2015 Sheets ("C_Csv_Export")
    Sheets("D_Xls_Export").Range("A:BZ").ClearContents 'bis 08.07.2015 Sheets ("D_CSV_Export")
    
    Dim arrStrings(3, 1) As Variant
    Dim intc As Integer
    Dim strPath As String
    
    arrStrings(0, 0) = "A_Xls_Export"                                '  Tabelle für Datei 1  -   _
Anpassen!
    arrStrings(0, 1) = "a_xls_export.xls"      '  Name von Datei 1     -  Anpassen!
    
    arrStrings(1, 0) = "B_Xls_Export"                                  '  Tabelle für Datei 2  - _
  Anpassen!
    arrStrings(1, 1) = "a_xls_export.xls"      '  Name von Datei 2     -  Anpassen!
    
    arrStrings(2, 0) = "C_Xls_Export"                                    '  Tabelle für Datei 3  _
 -  Anpassen!
    arrStrings(2, 1) = "a_xls_export.xls"               '  Name von Datei 3     -  Anpassen!
    
    arrStrings(3, 0) = "D_Xls_Export"                                    '  Tabelle für Datei 3  _
 -  Anpassen!
    arrStrings(3, 1) = "a_xls_export.xls"               '  Name von Datei 3     -  Anpassen!
    
    strPath = "D:\EXPORTE\"                                 '  Pfad zu den Dateien  -  Anpassen! _
    
    For intc = 0 To UBound(arrStrings)
        Sheets(arrStrings(intc, 0)).Range("A2:IV65536").ClearContents
        With Sheets(arrStrings(intc, 0)).QueryTables.Add(Connection:="TEXT;" & strPath &  _
arrStrings(intc, 1) _
                , Destination:=Sheets(arrStrings(intc, 0)).Range("A2"))
            .Name = arrStrings(intc, 0)
            .FieldNames = True
            .PreserveFormatting = True
            .RefreshStyle = xlInsertDeleteCells
            .SaveData = False
            .AdjustColumnWidth = True
            .TextFilePlatform = xlWindows
            .TextFileStartRow = 1
            .TextFileParseType = xlDelimited
            .TextFileTextQualifier = xlTextQualifierDoubleQuote
            .TextFileTabDelimiter = True
            .TextFileSemicolonDelimiter = True
            .Refresh BackgroundQuery:=False
            Sheets("Differenzen").Select
        End With
        If Sheets(arrStrings(intc, 0)).Range("F1") = "Vorname2" Then
            Sheets(arrStrings(intc, 0)).Columns("F:G").Delete
        End If
        If Sheets(arrStrings(intc, 0)).Range("H1") = "Familienname2" Then
            Sheets(arrStrings(intc, 0)).Columns("F:F").Delete
        End If
    Next
    
    With Application
        .StatusBar = False
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
        .Calculation = xlCalculationAutomatic
        .Cursor = xlDefault
    End With
End Sub
Danke und Servus, Walter

Bild

Betrifft: AW: VBA - Einlesen von xls-Dateien - Codeumstellung
von: Jürgen V.
Geschrieben am: 09.07.2015 13:50:03
Hallo Walter,
warum machst Du Dir das Leben unnötig schwer und verwendest VBA für etwas, was ganz bequem über die Standard-Funktionen von Excel zu erledigen ist? Richte doch einfach die 4 Importe über "Daten - externe Daten abrufen" ein (das ist im Grunde auch das, was Dein Code bislang macht). Dabei kannst Du auch die Spalten vom Import ausschließen, die in Deinem Code nach dem Import gelöscht werden. Zum aktualisieren musst Du dann nur noch "Daten - Alle aktualisieren" klicken.
Gruß, Jürgen

Bild

Betrifft: AW: VBA - Einlesen von xls-Dateien - Codeumstellung
von: WalterK
Geschrieben am: 09.07.2015 15:59:13
Hallo Jürgen,
so könnte man es vielleicht auch machen.
Da das Einlesen nur der erste kleine Teil eines GesamtMakros ist möchte ich dann doch lieber alles zusammen in einem Rutsch erledigen. Das ist für nicht so versierte Anwender dann auch einfacher.
Servus, Walter

Bild

Betrifft: AW: VBA - Einlesen von xls-Dateien - Codeumstellung
von: Jürgen V.
Geschrieben am: 09.07.2015 18:26:45
Hallo Walter,
gut, dann nimm dazu das "Alle aktualisieren" in das Gesamt-Makro auf.
Tipp: wenn Du Excel-Tabellen per "externe Daten abrufen" importierst, erhältst Du, was früher "Listen" und heute "Tabellen" heißt. Diese haben einen (anpassbaren) Namen, über den man bequem auf die Daten zugreifen kann. Nutzt man diese, benötigt man kaum noch VBA-Code, um Formeln, Pivottabellen und Diagramme zu aktualisieren.
Gruß, Jürgen

Bild

Betrifft: AW: VBA - Einlesen von xls-Dateien - Codeumstellung
von: WalterK
Geschrieben am: 09.07.2015 20:10:57
Hallo,
vielleicht findet sich noch jemand, der den gezeigten Code entsprechend abändern kann.
Servus, Walter

Bild

Betrifft: Habs doch selbst hinbekommen. Servus, Walter
von: WalterK
Geschrieben am: 12.07.2015 10:21:03


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA - Einlesen von xls-Dateien - Codeumstellung"