vba - Excel VBA将文本文件导入excel并将特定列转换为文本
问题描述
我目前正在处理一项任务,这只是通过 VBA 将文本文件导入到 excel 中。
问题是我想编写一个 VBA 代码,仅将变量“数字”转换为文本格式,在导入文本文件时其他变量没有变化,因此,导入后第一个数字“0”将保留进入excel。
下面是示例,但文本文件实际上包含了 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 多个变量的文本文件但仅将变量“数字”转换为文本的代码。谢谢。
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
可以改进代码以自动确定要打开的文本文件中的实际列数。并不复杂,但它并不构成问题的对象。
推荐阅读
- c# - 如何在 ac# 模型中反序列化此 xml
- installation - 使用相对路径设置 Inno Setup 符号工具
- node.js - 如何包装 ioredis 包以测量每种方法的响应时间?
- typescript - 如何结合 2 combineLatest 绕过 6 个参数的限制
- javascript - 如何将对象从浏览器环境返回到 Puppeteer 中的 Node 环境?
- javascript - Ember-Data“错误:断言失败:您为 id 为“当前”的“用户”发出了“findRecord”请求,但适配器的响应没有任何数据”
- reactjs - 如何存储由 dangerouslySetInnerHTML React 设置的输入字段中的值?
- reactjs - 防止 JointJS 元素从纸上生成
- ios - Xcode 12b1 和 Swift 包:自定义字体
- libreoffice - LibreOffice Calc 宏将命名工作表保存在 csv 文件中