从CSV复制到Excel的Excel VBA丢失原始格式

时间:2018-06-29 07:40:34

标签: excel excel-vba csv vba

我有一个CSV文件,我将其作为Excel VBA中的工作簿打开(Workbooks.Open(“。csv”)),在粘贴后,我从csv文件中复制了一定范围,该文件最初是文本(请参见csv图像)新excel文件中的范围(请参见excel图片),它将丢失其前导零。我该如何解决?

2 个答案:

答案 0 :(得分:2)

改为使用Workbooks.OpenText

您可以使用FieldInfo指定哪一列是哪种格式(请参见xlColumnDataType)。要保留零,请将此列的格式设置为文本。

Workbooks.OpenText Filename:=mypath, DataType:=xlDelimited, _ 
    TextQualifier:=xlTextQualifierDoubleQuote, _ 
    Semicolon:=True, _ 
    FieldInfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), Array(4, 2)), _ 
    Local:=True

这会将第1…4列格式化为文本。

答案 1 :(得分:0)

在这里看不到您的图片,但是您的来源可能是一串数字。
我会将NumberFormat = "@"应用于目标范围,并使用PasteSpecial xlValues

With targetDateRange
   .NumberFormat = "@"
   .PasteSpecial xlPasteValues
End with

另一种可能性是在粘贴后应用格式:

   targetDateRange.NumberFormat = "0000000000"

但是您将得到数字,而不是字符串