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
可以改进代码以自动确定要打开的文本文件中的实际列数。不复杂,但不是问题的对象。
我目前正在处理一项任务,它只是通过 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
可以改进代码以自动确定要打开的文本文件中的实际列数。不复杂,但不是问题的对象。