2017-10-19 125 views
0

我在将文件转换为其他格式时遇到问题。我有几百个.csv格式的文件,需要转换它们。我发现一个正在工作的sub(),但如果我首先打开文件然后手动保存,则格式看起来会有所不同。它来自哪里?将.csv保存为.xlsx

下面是宏我不打开文件使用:

Sub csv_to_xlsx() 
Dim CSVfolder As String, _ 
    XlsFolder As String, _ 
    fname As String, _ 
    wBook As Workbook 

CSVfolder = "C:\Users\ja\Desktop\CSV\" 
XlsFolder = "C:\Users\ja\Desktop\XLSX\" 

fname = Dir(CSVfolder & "*.csv") 

Do While fname <> "" 
    Set wBook = Workbooks.Open(CSVfolder & fname, Format:=6, Delimiter:=",") 
    wBook.SaveAs XlsFolder & Replace(fname, ".csv", ""), xlOpenXMLWorkbook 
    wBook.Close False 
    fname = Dir 
Loop 
End Sub 

和宏观与打开文件:

Sub open_csv_save_xlsx() 

Dim sciezka As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer 

Application.ScreenUpdating = False 
sciezka = ActiveWorkbook.Path & "\" 
fileName = Dir(sciezka & "*.csv") 
Do While fileName <> "" 
i = i + 1 
j = 2 
Cells(i, 1) = fileName 
fileName = Dir() 
Loop 
Application.ScreenUpdating = True 

Dim a As Integer, b As Integer, arkusz As String, XlsFolder As String, wBook As Workbook 
XlsFolder = "C:\Users\ja\Desktop\XLSX\" 
a = WorksheetFunction.CountA(Range("A:A")) 
b = 1 
For i = 1 To a - 1 
arkusz = Range("A" & b).value 
Range("C" & b).value = b 
b = b + 1 
Workbooks.Open (sciezka & arkusz) 
Set wBook = ActiveWorkbook 
wBook.SaveAs XlsFolder & Replace(sciezka & arkusz, ".csv", ""), xlOpenXMLWorkbook 
ActiveWorkbook.Close True 
Next i 

End Sub 

第一部分是使工作表的文件列表,并在线路wBook.SaveAs XlsFolder & Replace(sciezka & arkusz, ".csv", ""), xlOpenXMLWorkbook粉碎和我不知道原因。发生错误1004。

任何人有任何其他方式来转换这个文件?为什么格式不同呢?

+0

这两个代码块都会打开工作簿,而第一个代码块不会生成文件列表。首先尝试单步执行代码,以了解其实际执行的内容。 –

+0

@MacroMan是的,你是对的,有功能。打开第一个宏。我不理解的是手动保存和使用SUB()之间的区别。你有什么想法吗? – RafMil

回答

0

它看起来像你指定一个目录两次,在XlsFolderscienka

修改您的代码这应该揭示问题:

MsgBox XlsFolder & Replace(sciezka & arkusz, ".csv", "") 
wBook.SaveAs XlsFolder & Replace(sciezka & arkusz, ".csv", ""), xlOpenXMLWorkbook 

我想你需要删除scienka &

+0

是的!完美搭配。它解决了1004错误的问题,但最终的效果仍然不符合预期。问题在于我不了解手动保存和使用SUB()之间的区别。你有什么想法吗?也许我应该使用其他文件格式,然后xlOpenXMLWorkbook?我想在使用宏后的工作簿看起来像我手动保存它。 – RafMil

+0

您是否尝试将扩展名添加到它,即“替换(arkusz,”.csv“,”.xlsx“)? –

+0

没有帮助。我陷入了这个问题。 – RafMil