2017-03-23 1 views
1

私は月に名前が付けられたフォルダにバンドルされた一連のCSVファイルを持っています。私はそれらを見つけるために働くコードを持っている、それらを開いて、それらを解析し、私は彼らが私が望むようにそれらを保存する問題を抱えています。私が目指しているのは、それが新しい形式と解析された形式のファイル名と同じファイル名で保存することです。CSVからXLSXに変換して同じファイル名で保存する

Sub OpenCSVs_2() 
Dim MyFiles As String, ThisMonth As String, Convert As String 
Dim startPath As String 
ThisMonth = Format(Date, "mmmm") 
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\" 
MyFiles = Dir(startPath & "*.csv") 
Convert = Dir(startPath & "*xlsx") 

Do While MyFiles <> "" 

Workbooks.Open startPath & MyFiles 

Call Parse1 

ActiveWorkbook.SaveAs Filename:="startPath & Convert",  FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

MyFiles = Dir '<----------------error happens here 

Loop 

End Sub 

上記実際に何かを行い、XLSMファイル名「startPath &変換」を作成します。解決策は私の目の前にあると確信しています。

+0

darnitは大きな呪いではありませんが、記事を投稿する際にはプロの気分を保ってください。 –

答えて

2

私の以前の投稿と同様に、変数を引用符で囲み、それを文字列に変換します。最初に、startPath & MyFilesの引用符を削除してから、Replaceという関数を使って拡張子を置き換えてください。私は問題を引き起こす可能性があるので、あなたがActiveworkbookを使用するのを避けるべきであるので、Workbookオブジェクトを加えました。

Sub OpenCSVs_2() 
Dim MyFiles As String, ThisMonth As String 
Dim startPath As String 
Dim wb As Workbook 
ThisMonth = Format(Date, "mmmm") 
startPath = "C:\Users\ME\Desktop\CSV find convert tests\" & ThisMonth & "\" 
MyFiles = Dir(startPath & "*.csv") 

Do While MyFiles <> "" 

    Set wb = Workbooks.Open(startPath & MyFiles) 

    Call Parse1 

    wb.SaveAs Filename:=startPath & Replace(MyFiles, ".csv", ".xlsx"), FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 

    MyFiles = Dir 

Loop 

End Sub 
+0

Ah ...置き換えはあらかじめ定義された関数です。これは...ありがとうございます。 –

関連する問題