Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

EXCEL VBA ADO nach Semikolon separieren

EXCEL VBA ADO nach Semikolon separieren
05.04.2023 14:48:09
Script Kidd

Hallo, ich nutze diesen Code um alle Daten einer CSV Datei zu kopieren ohne diese öffnen zu müssen:

Sub GetDatafromCSV()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim FileName As String
    
    Set cn = New ADODB.Connection
    
        cn.ConnectionString = _
        "Provider=Microsoft.ACE.OLEDB.16.0;" & _
        "Data Source=" & GetLocalPath(ThisWorkbook.Path) & "\;" & _
        "Extended Properties='text;HDR=YES;FMT=Delimited(';')'"
    
    cn.Open
    
    Set rs = New ADODB.Recordset
    
    rs.ActiveConnection = cn
    rs.Source = "SELECT * FROM [Test.csv]"
    rs.Open
    
    Tabelle2.Range("A21").CopyFromRecordset rs
    
    rs.Close
    cn.Close

End Sub


Leider wird hiermit nur nach Komma separiert, also die nächste Spalte genutzt und nicht nach Semikolon. Es landet also mit den aktuellen Daten alles in Spalte A bis C (In der CSV sind es aber eigentlich A bis W).
Ich sitze jetzt schon einige Stunden vor Google und habe bisher keine praktikable Lösung gefunden.
Systemseitig ist das Semikolon als Trennzeichen eingetragen, wird aber leider nicht genutzt.
Schema.ini Datei ist leider auch keine Lösung. und andere "Provider" wie Jet4.0 oder Text Driver kriege ich nicht zum laufen da 64-bit Betriebssystem.

Bin für jeden Hinweis dankbar!

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: EXCEL VBA ADO nach Semikolon separieren
05.04.2023 14:58:09
Rudi Maintaire
Hallo,
ich mach das nach diesem Schema:
Sub CSV_Import()
  Dim vROH, arrDaten(), vTMP, i As Long, j As Long
  Dim iMAX As Long
  Const cstrDELIM As String = ";" 'Trennzeichen

  Open "c:\test.csv" For Input As #1
  Do While Not EOF(1)
    Line Input #1, vTMP
    If Len(vTMP) Then
      vROH = vROH & vbCrLf & vTMP
    End If
    iMAX = Application.Max(iMAX, UBound(Split(vTMP, cstrDELIM)))
  Loop
  Close #1
  
  vROH = Mid(vROH, 2)
  vROH = Split(vROH, vbCrLf)
  
  ReDim arrDaten(UBound(vROH), iMAX)
  
  For i = LBound(vROH) To UBound(vROH)
    vTMP = Split(vROH(i), cstrDELIM)
    For j = LBound(vTMP) To UBound(vTMP)
      arrDaten(i, j) = vTMP(j)
    Next
  Next
    
  Worksheets.Add.Cells(1, 1).Resize(UBound(arrDaten) + 1, UBound(arrDaten, 2) + 1) = arrDaten
  
End Sub
Gruß
Rudi

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige