質問編集履歴

2

momogorira

momogorira score 5

2020/04/18 19:36  投稿

★解決済【ExcelVBA】csvが増えるとエラーになる
【ExcelVBA】csvが増えるとエラーになる
★情報の追加・修正依頼欄にてご提示頂いた内容で解決しました★  
【原因】  
このコードを持つExcelファイルを保存しているフォルダと、wpathのフォルダが同じだった為。  
【解決策】  
このコードを持つExcelファイルを別のフォルダへ移動する。  
→エラーが発生せず、正常に処理が完了しました。  
 
ーーーーーーーーーー  
【ExcelVBA】
複数のcsvファイルを結合するコードについて、結合対象のcsvファイルが増えるとエラーメッセージが出ます。
【発生エラー】
エラー55 ファイルは既に開かれています。
【コード】
Sub csvmerge()
Application.ScreenUpdating = False
wpath = Range("B3")
wfile = Dir(wpath & "\")
flag = 0
Do While wfile <> ""
If InStr(wfile, ".csv") Then
flag = flag + 1
If flag = 1 Then
FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "\output.csv"
Open ThisWorkbook.Path & "\output.csv" For Output As #1
Close #1
End If
Open ThisWorkbook.Path & "\output.csv" For Append As #1
**Open wpath & "\" & wfile For Input As #2**
Do Until EOF(2)
Line Input #2, w_str
Print #1, w_str
Loop
Close #2
Close #1
End If
wfile = Dir()
Loop
MsgBox "完了!", vbInformation
Open wpath & "\" & wfile For Input As #2
デバック画面にてここが対象となっていました。
ファイル数があまりなければエラーも出ず正常に結合済みファイル(output.csv)が作成されますが、
大体csvファイルが22個を超えるとエラーが出てしまいます。
また、エラーが出ても結合済みファイルは作成されるため『エラーを出さないようにする』コードを新たに追加した方がよいかもしれないとも悩んでおります。
ネットで「エラー55」や「csv」「csv 大量」等で調べましたが、このような事象と対処法が見つからず悩んでおります。
初心者故わかりづらい文章で申し訳ございません。
よろしくお願い致します。
  • VBA

    5440 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1

momogorira

momogorira score 5

2020/04/16 09:45  投稿

【ExcelVBA】csvが増えるとエラーになる
★解決済【ExcelVBA】csvが増えるとエラーになる
★情報の追加・修正依頼欄にてご提示頂いた内容で解決しました★  
【原因】  
このコードを持つExcelファイルを保存しているフォルダと、wpathのフォルダが同じだった為。  
【解決策】  
このコードを持つExcelファイルを別のフォルダへ移動する。  
→エラーが発生せず、正常に処理が完了しました。  
 
ーーーーーーーーーー  
 
【ExcelVBA】
複数のcsvファイルを結合するコードについて、結合対象のcsvファイルが増えるとエラーメッセージが出ます。
【発生エラー】
エラー55 ファイルは既に開かれています。
【コード】
Sub csvmerge()
Application.ScreenUpdating = False
wpath = Range("B3")
wfile = Dir(wpath & "\")
flag = 0
Do While wfile <> ""
If InStr(wfile, ".csv") Then
flag = flag + 1
If flag = 1 Then
FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "\output.csv"
Open ThisWorkbook.Path & "\output.csv" For Output As #1
Close #1
End If
Open ThisWorkbook.Path & "\output.csv" For Append As #1
**Open wpath & "\" & wfile For Input As #2**
Do Until EOF(2)
Line Input #2, w_str
Print #1, w_str
Loop
Close #2
Close #1
End If
wfile = Dir()
Loop
MsgBox "完了!", vbInformation
Open wpath & "\" & wfile For Input As #2
デバック画面にてここが対象となっていました。
ファイル数があまりなければエラーも出ず正常に結合済みファイル(output.csv)が作成されますが、
大体csvファイルが22個を超えるとエラーが出てしまいます。
また、エラーが出ても結合済みファイルは作成されるため『エラーを出さないようにする』コードを新たに追加した方がよいかもしれないとも悩んでおります。
ネットで「エラー55」や「csv」「csv 大量」等で調べましたが、このような事象と対処法が見つからず悩んでおります。
初心者故わかりづらい文章で申し訳ございません。
よろしくお願い致します。
  • VBA

    5440 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る