关于VBA中 新建CSV文件 保存成文本格式的有关问题 有代码
关于VBA中 新建CSV文件 保存成文本格式的问题 有代码
数据例:
原始数据.csv
AA BB CC DD
001 002 003 004
005 006 007 008
00m 00n 00p 00q
原始数据类似以上数据(以三组数据为例)。
现在需要数据为:
1.csv
AA BB CC DD
001 002 003 004
2.csv
AA BB CC DD
005 006 007 008
3.csv
AA BB CC DD
00m 00n 00p 00q
代码如下:
Sub new_csv()
Dim file_name As String
Dim i, j As Integer
Dim new_workbook As Workbook
Dim new_sheet As Worksheet
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open("E:\原始数据.csv")
Dim sheet As Excel.Worksheet
Set sheet = xlBook.Worksheets(1)
For i = 1 To 4
Set new_workbook = Workbooks.Add
Set new_sheet = new_workbook.Worksheets(1)
For j = 1 To 4
new_sheet.Cells(1, j) = sheet.Cells(1, j)
new_sheet.Cells(2, j) = sheet.Cells(i + 1, j)
‘********************
’Msgbox(new_sheet.Cells(2, j))
‘********************
Next
new_sheet.Range("A1:D2").NumberFormatLocal = "@"
new_workbook.SaveAs "E:\" & i & ".csv", xlCSV
new_workbook.Close True
Next
End Sub
问题:
打开保存好的新csv文件,发现数据前面的“0”全都没有了,要求和原始数据相同。
貌似Range没起作用。
在循环中添加Msgbox,赋值时没有错误,全都和原始数据完全相同。
我需要如何修改。
------解决方案--------------------
在Excel 2003中,开始记录宏,手动设置单元格数据格式为字符串,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
------解决方案--------------------
把格式代码放到赋值前试试:
[code=vb]
Set new_sheet = new_workbook.Worksheets(1)
new_sheet.Range("A1:D2").NumberFormatLocal = "@"
For j = 1 To 4
new_sheet.Cells(1, j) = sheet.Cells(1, j)
new_sheet.Cells(2, j) = sheet.Cells(i + 1, j)
‘********************
’Msgbox(new_sheet.Cells(2, j))
‘********************
Next
/code]
数据例:
原始数据.csv
AA BB CC DD
001 002 003 004
005 006 007 008
00m 00n 00p 00q
原始数据类似以上数据(以三组数据为例)。
现在需要数据为:
1.csv
AA BB CC DD
001 002 003 004
2.csv
AA BB CC DD
005 006 007 008
3.csv
AA BB CC DD
00m 00n 00p 00q
代码如下:
Sub new_csv()
Dim file_name As String
Dim i, j As Integer
Dim new_workbook As Workbook
Dim new_sheet As Worksheet
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Open("E:\原始数据.csv")
Dim sheet As Excel.Worksheet
Set sheet = xlBook.Worksheets(1)
For i = 1 To 4
Set new_workbook = Workbooks.Add
Set new_sheet = new_workbook.Worksheets(1)
For j = 1 To 4
new_sheet.Cells(1, j) = sheet.Cells(1, j)
new_sheet.Cells(2, j) = sheet.Cells(i + 1, j)
‘********************
’Msgbox(new_sheet.Cells(2, j))
‘********************
Next
new_sheet.Range("A1:D2").NumberFormatLocal = "@"
new_workbook.SaveAs "E:\" & i & ".csv", xlCSV
new_workbook.Close True
Next
End Sub
问题:
打开保存好的新csv文件,发现数据前面的“0”全都没有了,要求和原始数据相同。
貌似Range没起作用。
在循环中添加Msgbox,赋值时没有错误,全都和原始数据完全相同。
我需要如何修改。
------解决方案--------------------
在Excel 2003中,开始记录宏,手动设置单元格数据格式为字符串,结束记录宏,按Alt+F11键,查看刚才记录的宏对应的VBA代码。
------解决方案--------------------
把格式代码放到赋值前试试:
[code=vb]
Set new_sheet = new_workbook.Worksheets(1)
new_sheet.Range("A1:D2").NumberFormatLocal = "@"
For j = 1 To 4
new_sheet.Cells(1, j) = sheet.Cells(1, j)
new_sheet.Cells(2, j) = sheet.Cells(i + 1, j)
‘********************
’Msgbox(new_sheet.Cells(2, j))
‘********************
Next
/code]