Microsoft Excel

Herbers Excel/VBA-Archiv

Fehler 13, CSV in .xls öffnen


Betrifft: Fehler 13, CSV in .xls öffnen
von: Martin Kn.
Geschrieben am: 11.07.2018 14:06:37

Hallo liebe Community,

ich bin leider auf ein Problem gestoßen während ich für mein Praktikum eine Excel-Datei vorbereiten soll, die Honorar-Listen jeglicher Form einlesen und einfügen kann. .xls, .xlsx funktioniert schonmal, .csv- Dateien werden mir auch angezeigt, allerdings wenn ich diese durch die Funktion get kriege ich den Fehler 13: Typen unverträglich.
Warum weiß ich nicht.
Wenn ich bezeichnen muss, dass LOCAL=True dann nur wo? Weiß nicht ob das hilft. Würde ja eine Beispiel-CSV Datei hochladen, geht aber leider nicht. Habe stattdessen den Inhalt in den Editor gepackt:

http://www.herber.de/bbs/user/122619.txt

Hier mein bisheriger Code: (findet man so ja schnell im Netz)

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;*.csv;*.xlsx*), *.xls;*.xlsx;* _
.csv*", , , , 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, 11).Formula = _
                "='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
            Else
                blnÜberschrift = True
                .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 11).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

Sub StatusBalken(ProzentSatz) ''ProzentSatz = Int((i / 10000) * 100)
    Dim Mess, Z, Rest
    Static oldStatusBar As Integer
    Static blnInit As Boolean

    If Not blnInit Then
        oldStatusBar = Application.DisplayStatusBar
        Application.DisplayStatusBar = True
    End If
    
    Mess = ""
    For Z = 1 To ProzentSatz
        Mess = Mess & ChrW(Val("&H25A0"))
    Next Z
    Rest = 100 - ProzentSatz
    For Z = 1 To Rest
        Mess = Mess & ChrW(Val("&H25A1"))
    Next Z
    Application.StatusBar = Mess & " " & ProzentSatz & "%"
    
    If Rest <= 0 Then
        Application.StatusBar = False
        Application.DisplayStatusBar = oldStatusBar
    End If
End Sub

Wäre super wenn mir jemand helfen könnte, habe echt alles probiert was ich mit meiner geringen Erfahrung machen konnte.

Liebe Grüße,
Martin

  

Betrifft: AW: Fehler 13, CSV in .xls öffnen
von: Nepumuk
Geschrieben am: 11.07.2018 14:19:51

Hallo Martin,

eine CSV-Datei ist im Prinzip eine Textdatei darauf kannst du keine Formel setzten. Die musst du öffnen und als xlsx / xls speichern.

Gruß
Nepumuk


  

Betrifft: AW: Fehler 13, CSV in .xls öffnen
von: Martin Kn.
Geschrieben am: 11.07.2018 14:25:11

Hallo Nepumuk,

danke auf jeden Fall schon mal für die schnelle Antwort.
Gibt es eine Möglichkeit, dass wenn ich meine Formel ausführe und auf CSV-Dateien anwende, dass diese automatisch in .xls Dateien umgewandelt werden? Sind halt Unmengen an Dateien die da kommen und eingelesen werden müssen...
Danke schonmal!

Liebe Grüße,
Martin


  

Betrifft: AW: Fehler 13, CSV in .xls öffnen
von: Nepumuk
Geschrieben am: 11.07.2018 14:45:03

Hallo Martin,

nein, das geht nicht. Das sind zusätzliche Programmschritte.

Teste mal:

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
    Dim objWorkbook As Workbook
    Dim strFilename As String
    
    vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls;*.csv;*.xlsx*), *.xls;*.xlsx;* .csv*", , , , 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)
        
        If LCase$(Right$(vFileToOpen(i), 3)) = "csv" Then
            strFilename = Left$(sDatei, InStrRev(sDatei, ".") - 1)
            Set objWorkbook = Workbooks.Open(Filename:=vFileToOpen(i), Local:=True)
            Call objWorkbook.SaveAs(Filename:=sPfad & strFilename, FileFormat:=xlOpenXMLWorkbook)
            vFileToOpen(i) = objWorkbook.FullName
            Call objWorkbook.Close(SaveChanges:=False)
            Set objWorkbook = Nothing
        End If
        
        sDatei = Dir(vFileToOpen(i))
        
        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, 11).Formula = _
                    "='" & sPfad & "[" & sDatei & "]Tabelle1'!A2"
            Else
                blnÜberschrift = True
                .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 11).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

Gruß
Nepumuk


  

Betrifft: AW: Fehler 13, CSV in .xls öffnen
von: Martin Kn.
Geschrieben am: 11.07.2018 14:56:11

Lieber Nepumuk,

klappt perfekt ich danke dir tausend Mal!! Vielen lieben Dank!
Wenn ich das richtig verstehe kopierst du die csv-Dateien einmal als xls oder so ähnlich, richtig?
Egal, super nett von dir :)
Liebe Grüße,
Praktikum ab heute über 3€/Stunde :p


  

Betrifft: AW: Fehler 13, CSV in .xls öffnen
von: Günther
Geschrieben am: 11.07.2018 14:44:20

Moin,
frag doch einmal (ganz vorsichtig) nach, ob offizielle MS-Add-Ins erlaubt sind. mit Power Query, -> http://www.excel-ist-sexy.de/power-query-das-add-in/ wäre das Ganze (auch die *.xls* wahrscheinlich erheblich komfortabler.

Gruß
Günther