Excel VBA 将文本文件导入 excel 并将特定列转换为文本

Excel VBA Importing text file into excel and convert a specific column as text

我目前正在处理一项任务,它只是通过 VBA.

将文本文件导入 excel

问题是我想写一个 VBA 代码,它只将变量“Number”转换为文本格式,在导入文本文件时不改变其他变量,因此,第一个导入 excel.

后数字“0”将保留

下面是例子,但是文本文件实际上包含了100多个变量,录制宏似乎对那么多变量不起作用。

文本文件:

数据日期|型号|状态|状态时间戳|编号|xxx

2021-02-02|投资者|批准|2020-09-25 15:54:58|0312475|asdfasfsdf

2021-02-02|投资者|批准|2020-04-23 23:01:30|0312475|asdfasfsdf

2021-02-02|中|批准|2020-09-28 16:49:48|0312475|asdfasfsdf

还望指教。非常感谢。

因为我想要导入包含 100 多个变量的文本文件但仅将变量“Number”转换为文本的代码。谢谢

Workbooks.OpenText Filename:=fdata & intxt1, _
    Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, _
    ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, _
    Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 2), Array(6, 1)),
    TrailingMinusNumbers:=True, _
    Local:=True

如果您只需要将特定列作为文本打开,创建一个数组到该特定列就足够了,例如FieldInfo。如果那个特定的列是,比方说,第 100 个列,那么编写这样一个数组的数组应该会更加困难。在这种情况下,您可以使用下一个代码,自动构建必要的数组:

Sub importTextFormatOneCol()
   Dim fileToOpen As String, arr(), i As Long, colsNo As Long, colString As Long
   
   colsNo = 100: colString = 5
   ReDim arr(colsNo - 1)
   For i = 0 To UBound(arr)
        Select Case i
            Case colString - 1 'here it can be an enumeration of cases (-1 because of base zero array)
            'Case 4, 10, 21 ' in such a chase, the columns 5, 11, 22 will be formatted As Text
                arr(i) = Array(i + 1, 2)
            Case Else
                arr(i) = Array(i + 1, 1)
        End Select
   Next i
   Workbooks.OpenText fileName:=fdata & intxt1, _
          origin:=932, startRow:=1, DataType:=xlDelimited, _
         TextQualifier:=xlDoubleQuote, Other:=True, OtherChar:="|", FieldInfo:=arr()
End Sub

可以改进代码以自动确定要打开的文本文件中的实际列数。不复杂,但不是问题的对象。