使用vba将csv文件转换为Excel(以列为文本)

时间:2012-11-03 21:19:08

标签: excel-vba vba excel

我有一个csv文件,例如下面的数据(a.csv)。现在我想转换成excel 使用vba脚本。我在这里经历了很多解决方案,问题是在第二列中,前导0被截断。有一种方法可以在将csv导入excel之前将第二列定义为文本。我不想像许多解决方案中所建议的那样在第二列附加“`”或任何字符。能否请您提供示例代码

a.csv
--------
123,001232323
456,004567772

我有下面的代码,但是它可以工作

srccsvfile = "C:\a.csv"
tgtxlsfile = "C:\a.xls"

'Instantiate Excel
Set objExcel = CreateObject("Excel.Application")


'open the CSV file

Set objWorkBook = objExcel.Workbooks.open(srccsvfile)

Set objWorksheet1 = objWorkbook.Worksheets(1)


objWorksheet1.Columns("A:I").AutoFit
objWorksheet1.Columns("B").NumberFormat="@"

'Save the file as excel workbook
objWorkBook.SaveAs tgtxlsfile, 39

'close workbook
objWorkBook.Close False
'quit excel
objExcel.Quit

'clean up
Set objWorkBook = Nothing
Set objExcel = Nothing

2 个答案:

答案 0 :(得分:0)

将单元格格式更改为“文本”而不​​是“常规”或“数字”,Excel将不管它。

答案 1 :(得分:0)

我不确定您尝试执行代码的位置。以下是您可以从Excel VBA中执行的操作;从其他地方执行代码需要在代码中提到很少的调整......

Sub importCSVFile()
Dim objWorkBook As Workbook
Dim myFile as String
srccsvfile = "C:\temp\a.csv"

Workbooks.OpenText Filename:=myFile, Origin:=-535, 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, 2)), _
        TrailingMinusNumbers:=True

Set objWorkBook = ActiveWorkbook

'do something with active WorkBook

End Sub