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

s5a0g9ez  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(180)

我正在尝试:

  • 从已关闭的CSV复制所有数据(works)
  • 粘贴它分离

初始位置:

  • 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位?!
  • Jet4.0不工作,因为我使用64位?!
  • 我尝试了“扩展属性='text;HDR=是;FMT=分隔**(;)**'“-〉错误
  • 尝试在注册表中找到分隔符“,”并更改为“;”“但是找不到

我的VBA知识很少,因为你可以阅读,我基本上只是复制所有的代码在一起
编辑:
感谢您的建议(CSV with comma or semicolon?),但我的系统操作员已经是“;“可悲的是,这并没有改变什么。

hkmswyz6

hkmswyz61#

尝试在导入后使用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

相关问题