【问题标题】:Excel VBA Importing text file into excel and convert a specific column as textExcel VBA将文本文件导入excel并将特定列转换为文本
【发布时间】:2021-12-06 23:09:01
【问题描述】:

我目前正在处理一项任务,这只是通过 VBA 将文本文件导入 excel。

问题是我想编写一个 VBA 代码,将变量“数字”仅转换为文本格式,在导入文本文件时其他变量没有变化,因此,第一个数字“0”将是导入excel后仍然存在。

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

文本文件:

DataDate|Model|Status|Status Timestamp |Number |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 多个变量的文本文件但仅将变量“数字”转换为文本的代码。谢谢。

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

【问题讨论】:

  • 这能回答你的问题吗? How to change Format of a Cell to Text using VBA
  • 只是 Application.Workbooks.OpenText "filepath", DataType:=xlDelimited, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 2), Array(6, 1)) 为我工作。
  • 谢谢,但是我应该如何编写包含100多个变量的文件的代码?
  • 请参阅 FaneDuru 的答案并将其合并为您的目的。注意:要在您的评论中 ping 某人,请使用 @name,以便该人收到您的评论通知。

标签: vba txt


【解决方案1】:

如果您只需要以文本形式打开特定列,则创建一个直到该特定列的数组就足够了,例如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

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

【讨论】:

  • 天啊。这正是我想做的,因为我想知道如何解决 FieldInfo 的数组部分。太感谢了。这对我有很大帮助。祝你一切顺利。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多