Thema Datum  Von Nutzer Rating
Antwort
03.12.2020 08:45:29 Peter
**
NotSolved
03.12.2020 09:26:47 Gast88365
NotSolved
03.12.2020 09:27:52 volti
NotSolved
03.12.2020 10:59:59 Gast88551
NotSolved
Rot CSV Import in Separate Arbeitsmappe (Tabellenblatt)
03.12.2020 12:19:11 volti
NotSolved
04.12.2020 10:59:27 Gast17626
NotSolved
04.12.2020 11:23:42 volti
NotSolved
04.12.2020 11:40:42 Gast12997
NotSolved
04.12.2020 12:41:37 volti
NotSolved
04.12.2020 14:47:14 Gast71370
NotSolved
04.12.2020 14:47:15 Gast44870
NotSolved
16.12.2020 09:46:36 Peter
NotSolved
16.12.2020 09:46:38 Peter
NotSolved

Ansicht des Beitrags:
Von:
volti
Datum:
03.12.2020 12:19:11
Views:
513
Rating: Antwort:
  Ja
Thema:
CSV Import in Separate Arbeitsmappe (Tabellenblatt)

Hallo,

es gibt jede Menge Varianten, eine CSV einzulesen.

Bei der von Dir vorgelegten Version sollte man bei größeren Mengen die Störfaktoren abschalten. Siehe erste Version....

Auch habe ich hier mal, wie von Gast angeregt, ein neues Blatt einfügen und umbenennen lassen. Vielleicht ist Dir dieses ja lieber.

 

In der zweiten Varianten wird über ein Array gearbeitet, das sollte dann deutlich schneller gehen.

Bzgl.der Vermischung von Spalten kann ich keine Aussage treffen. Da müsste man schon eine Beispielmappe und eine Testdatei haben....

Leider kann man hier ja nichts hochladen.

Option Explicit

'Version 1
Private Sub CommandButtonImport_Click()
    Dim fd As Office.FileDialog

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
            .Filters.Clear
            .Title = "Select a CSV File"
            .Filters.Add "CSV", "*.csv", 1
            .AllowMultiSelect = False
              
        Dim sFile As String
        If .Show Then
           sFile = .SelectedItems(1)
        End If
    End With
      
    ' Import CSV from FileDialog
    If sFile <> "" Then
        
        With Application
            .ScreenUpdating = False
            .EnableEvents = False
            .Calculation = xlCalculationManual
        End With
        
'Neues Blatt einfügen
        Sheets.Add , Sheets(Sheets.Count)
        On Error Resume Next
        ActiveSheet.Name = Replace(Mid$(sFile, InStrRev(sFile, "\") + 1), ".csv", "")
        On Error GoTo 0
        
        Open sFile For Input As #1
            row_number = 1
            Do Until EOF(1)
                Line Input #1, LineFormFile
                LineItems = Split(LineFormFile, ";")
                ActiveSheet.Cells(row_number, 1).Resize(1, UBound(LineItems) + 1) = LineItems
                row_number = row_number + 1
            Loop
        Close #1
    
        With Application
            .ScreenUpdating = True
            .EnableEvents = True
            .Calculation = xlCalculationAutomatic
        End With
    End If
       
End Sub


'Version 2
Private Sub CommandButtonImport_Click2()
    Dim fd As Office.FileDialog
    Dim iZeile As Long, oZiel As Range
    Dim sSpArr() As String, sZlArr() As String

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
            .Filters.Clear
            .Title = "Select a CSV File"
            .Filters.Add "CSV", "*.csv", 1
            .AllowMultiSelect = False
              
        Dim sFile As String
        If .Show Then
           sFile = .SelectedItems(1)
        End If
    End With
      
    ' Import CSV from FileDialog
    If sFile <> "" Then
        
       
'Neues Blatt einfügen
        Sheets.Add , Sheets(Sheets.Count)
        On Error Resume Next
        ActiveSheet.Name = Replace(Mid$(sFile, InStrRev(sFile, "\") + 1), ".csv", "")
        On Error GoTo 0
        Set oZiel = ActiveSheet.Range("A1") 'Hier beginnt die Ausgabe
        
'Daten in Zeilenarray schaffen
        sZlArr = Split( _
           CreateObject("Scripting.FileSystemObject") _
              .OpenTextFile(sFile).readall, vbCrLf)

'Daten zeilenweise ausgeben
        For iZeile = 0 To UBound(sZlArr)
            sSpArr = Split(sZlArr(iZeile), ";")
            If UBound(sSpArr) >= 0 Then
                oZiel.Offset(iZeile, 0).Resize(, UBound(sSpArr) + 1) = sSpArr
            End If
        Next iZeile
    End If
 End Sub

viele Grüße

Karl-Heinz


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
03.12.2020 08:45:29 Peter
**
NotSolved
03.12.2020 09:26:47 Gast88365
NotSolved
03.12.2020 09:27:52 volti
NotSolved
03.12.2020 10:59:59 Gast88551
NotSolved
Rot CSV Import in Separate Arbeitsmappe (Tabellenblatt)
03.12.2020 12:19:11 volti
NotSolved
04.12.2020 10:59:27 Gast17626
NotSolved
04.12.2020 11:23:42 volti
NotSolved
04.12.2020 11:40:42 Gast12997
NotSolved
04.12.2020 12:41:37 volti
NotSolved
04.12.2020 14:47:14 Gast71370
NotSolved
04.12.2020 14:47:15 Gast44870
NotSolved
16.12.2020 09:46:36 Peter
NotSolved
16.12.2020 09:46:38 Peter
NotSolved