EXCEL VBA ADO 复制 CSV 并用分号而不是逗号分隔

问题描述 投票:0回答:1

我在尝试什么:

  • 从封闭的 CSV 中复制所有数据(有效)
  • 分开粘贴

初始位置:

  • CSV 数据由分号分隔;
  • 下面的代码复制了所有内容,但只用逗号分隔,(对欧洲人来说很糟糕 -.-')

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

我已经用谷歌搜索了几个小时,但此时我一遍又一遍地得到相同的搜索结果。 我试过什么:

  • schema.ini 文件不起作用,它也根本不实用,必须为每个新的 CSV 创建一个新的 ini 文件
  • MS 文本驱动程序不工作,因为我使用的是 64 位?!
  • Jet 4.0 不工作因为我使用的是 64 位?!
  • 我试过“Extended Properties='text;HDR=YES;FMT=Delimited**(;)**'”-> error
  • 试图在注册表中找到分隔符“,”并更改为“;”但是没找到

我的VBA知识很少,大家可以看看,我基本上就是把所有的代码都copy在一起

编辑:

感谢您的建议(带逗号或分号的 CSV?)但我的系统操作员已经是“;”可悲的是,它并没有改变任何事情。

excel vba csv ado excel-365
1个回答
0
投票

导入后尝试使用 TextToColumns。这假设数据中没有分号。

Option Explicit

Sub GetDatafromCSV()
    Dim cn As ADODB.Connection, r As Long
    Set cn = New ADODB.Connection
    With cn
        .ConnectionString = _
        "Provider=Microsoft.ACE.OLEDB.16.0;" & _
        "Data Source=" & ThisWorkbook.Path & ";" & _
        "Extended Properties='text;HDR=YES;FMT=Delimited'"
       .Open
    End With

    Const SQL = "SELECT * FROM [Test.csv]"
    With Sheet1
        .Range("A21").CopyFromRecordset cn.Execute(SQL)
        r = .Cells(.Rows.Count, "A").End(xlUp).Row
        Application.DisplayAlerts = False
        .Range("A21:A" & r).TextToColumns Destination:=.Range("A21"), _
               DataType:=xlDelimited, Semicolon:=True
         Application.DisplayAlerts = True
    End With
    cn.Close
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.