2013-08-20 60 views
0

我有一个宏'macro1',它将文件夹内的所有* .xls文件转换为* .csv。转换它们后,我使用命令提示合并行。我使用macro2将合并的文件转换为xls。一切工作正常,但是当一个值是123456789123456时,生成的csv值就像1234E + 11。如何保持转换文件之间的数字格式?Xls到CSV宏数字转换格式

这里是我的宏

宏1

Option Explicit 

Sub ConvertToCSV() 

Dim i As Long 
Dim NumFiles As Long 
Dim FileName As String 
Dim FileNames() As String 


FileName = Dir(ThisWorkbook.Path & "/*.xls") 

NumFiles = 1 
ReDim Preserve FileNames(1 To NumFiles) 
FileNames(NumFiles) = FileName 


Do While FileName <> "" 
FileName = Dir() 
If FileName <> "" Then 
NumFiles = NumFiles + 1 
ReDim Preserve FileNames(1 To NumFiles) 
FileNames(NumFiles) = FileName 
End If 
Loop 


Application.DisplayAlerts = False 
For i = 1 To UBound(FileNames) 
If FileNames(i) <> ThisWorkbook.Name Then 

Workbooks.Open FileName:=ThisWorkbook.Path & "\" & FileNames(i) 
ActiveWorkbook.SaveAs _ 
FileName:=Left(FileNames(i), Len(FileNames(i)) - 4) & ".csv", _ 
FileFormat:=xlCSV 
ActiveWorkbook.Close 
End If 
Next i 
Application.DisplayAlerts = True 

End Sub 

和macro2

Sub FromCSVToXLS() 
Dim myWB As Workbook, WB As Workbook 
Dim L As Long, x As Long, i As Long 

Dim v As Variant 

Dim myPath 

Dim myFile 
Set myWB = ThisWorkbook 
Application.ScreenUpdating = False 

Sheets(1).Cells.ClearContents 
myPath = "C:\Folder1\Folder2\" '<<< change path 
myFile = "myFile.csv" '<<< change file name 
Set WB = Workbooks.Open(myPath & myFile) 
ActiveSheet.UsedRange.Copy myWB.Sheets(1).Range("A1") 
ActiveWorkbook.Close False 
L = myWB.Sheets(1).UsedRange.Rows.Count 
For i = 1 To L 
v = Split(Cells(i, 1), ",") 
For x = 0 To UBound(v) 
Cells(i, x + 1) = v(x) 
Next x 
Next i 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs Filename:= "D:\data folder\1.xls" 

Application.DisplayAlerts = True 
myWB.Save 
Application.ScreenUpdating = True 
End Sub 

PS:在命令提示符下不改变的数字格式。验证!

谢谢

回答

0

解决!

我这样做:

打开合并的文件

选择在列

有关列

权CLIC,我改变了所有列的单元格的格式。