【问题标题】:VBA imports only the first column to excel from a txt fileVBA 仅将第一列从 txt 文件中导入到 excel 中
【发布时间】:2020-07-07 06:54:51
【问题描述】:

我有一个这样的txt文件:

"SORKOD";"BE0010";"BE0020";"BE0030"
"DEPO_000001";"";"5720004850313864";"266653"
"DEPO_000002";"";"5720004850356083";"278173"
"DEPO_000003";"";"5720004850346091";"286179"

因为要打开的数据库很大,所以我想导入一个过滤表。使用了下面的代码,但是只导入了第一列,不知道为什么。

Sub GetMyTXTData()
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset


Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
Dim currentDataFilePath As String
Dim currentDataFileName As String
Dim nextRow As Integer

currentDataFilePath = "K:\TB\"
currentDataFileName = "698"

xlcon.Provider = "Microsoft.ACE.OLEDB.12.0"
xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;HDR=NO;FMT=Delimited(,);""" 
xlcon.Open
xlrs.Open "SELECT * FROM [" & currentDataFileName & ".txt] WHERE F1='DEPO_000001'", xlcon
xlrs.MoveFirst

nextRow = 4
Sheets(1).Rows(nextRow & ":" & Sheets(1).Rows.Count).Delete

Sheets(1).Cells(nextRow, 1).CopyFromRecordset xlrs
xlrs.Close
xlcon.Close
Set xlrs = Nothing
Set xlcon = Nothing
End Sub

【问题讨论】:

    标签: excel vba text import


    【解决方案1】:

    您需要与文本文件位于同一文件夹中的schema.ini 文件。该信息定义了连接字符串中无法识别的“自定义”设置。

    反映连接字符串中设置的文件内容:

    [CSVData.txt]
     ColNameHeader=False
     Format=Delimited(;)
    

    然后是连接字符串

    xlcon.ConnectionString = "Data Source=" & currentDataFilePath & ";" & "Extended Properties=""text;"""
    

    我测试过,它可以工作;原始代码给了我在问题中报告的相同结果。

    我发现的所有链接都涉及 VBA 以外的语言,但信息是正确的。例如:Microsoft.ACE.OLEDB.12.0 CSV ConnectionStringUnable get value of all columns from CSV using OLEDB

    【讨论】:

    • 感谢您的回答,但仍然无法正常工作。只给我第一列。 :(
    • @inorbert 您是否在 schema.ini 文件的顶部使用了正确的文件名? 您的文件的名称,不是我在测试中使用的名称。
    • 问题已解决。有其他问题,您的解决方案非常感谢!
    猜你喜欢
    • 2013-01-17
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2022-01-06
    • 1970-01-01
    相关资源
    最近更新 更多