2017-10-19 9 views
0

ファイルを別の形式に変換する際に問題があります。私は.csv形式で何百ものファイルを持っており、それらを変換する必要があります。私は働いているsub()が見つかりましたが、最初にファイルを開いて手動で保存すると、フォーマットが違って見えます。それはどこから来ますか?ここで.cslsを.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はい、そうです。最初のマクロでは.Open関数があります。私が理解していないのは、手動保存とSUB()の使用の違いです。あなたはこれについて何か考えていますか? – RafMil

答えて

0

XlsFolderscienkaの両方にディレクトリを2回指定しているようです。

問題を明らかにする必要があり、このようにコードを改正:

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

関連する問題