首页 > 解决方案 > 通过 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 = "@"

标签: excelvbacsv

解决方案


您是否尝试过格式化目标字段

例子

QueryTable.TextFileColumnDataTypes 属性

.TextFileColumnDataTypes = Array(xlTextFormat)

推荐阅读