ファイルを別の形式に変換する際に問題があります。私は.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が発生します。
誰でもこのファイルを変換する方法はありますか?そして、なぜフォーマットの違いが生じるのですか?
これらのコードブロックは両方ともブックを開き、最初のコードブロックはファイルのリストを作成していません。実際に何をしているのかを理解するには、まずコードをステップ実行してみてください。 –
@MacroManはい、そうです。最初のマクロでは.Open関数があります。私が理解していないのは、手動保存とSUB()の使用の違いです。あなたはこれについて何か考えていますか? – RafMil