excel - 通过 vba 导入 csv 时将数字类型更改为文本类型
问题描述
我在下面有一个导入 csv 代码
Private Sub Workbook_Open()
Dim xFileName As Variant
Dim Rg As Range
Dim xAddress As String
xFileName = Application.GetOpenFilename("CSV File (*.csv), *.csv", , , , False)
If xFileName = False Then Exit Sub
On Error Resume Next
xAddress = Range("A1").Address
With ActiveSheet.QueryTables.Add("TEXT;" & xFileName, Range(xAddress))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
通常,它可以工作,但是当导入 csv 但某种以 0 数字开头的列时,excel 将该单元格视为数字并删除(隐藏)所有 0 开头的单元格。
我试图添加这个脚本,但那不起作用。
ActiveSheet.NumberFormat = "@"
解决方案
您是否尝试过格式化目标字段
例子
QueryTable.TextFileColumnDataTypes 属性
.TextFileColumnDataTypes = Array(xlTextFormat)
推荐阅读
- c++ - 将 Eigen::MatrixXd 转换为 arma::mat 并在新对象上制作副本
- c++ - 做图灵机,不太懂动作表
- apache - Python 应用程序的 HTTP 504 错误 AWS ElasticBeanstalk
- javascript - React Hooks 静态变量:对象属性与 useRef()
- forms - 如何从输入框中显示 HTML
- vb.net - 即使使用 Refresh、Invalidate 和 DoEvents,标签文本也不会更新
- archlinux - i3 窗口管理器:黑屏,无鼠标
- bash - Mono 可执行文件不会从 Mac 上的 crontab 运行
- spring-boot - Cucumber Spring DI 两个 Step 类加载 Spring 上下文
- flutter - 颤振开关小部件未更新