質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

Q&A

解決済

1回答

1691閲覧

【ExcelVBA】csvが増えるとエラーになる

momogorira

総合スコア5

VBA

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

0グッド

0クリップ

投稿2020/04/15 08:31

編集2020/04/18 10:37

【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 大量」等で調べましたが、このような事象と対処法が見つからず悩んでおります。
初心者故わかりづらい文章で申し訳ございません。
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tatsu99

2020/04/15 10:25

wpath = Range("B3")のwpathと ThisWorkbook.Pathが同じ場合はエラーになる可能性があります。 このマクロをもつexcelファイルが格納されているフォルダは、wpathと異なっていますか?
momogorira

2020/04/15 11:43 編集

追記・修正のご依頼を頂きありがとうございます。 このマクロをもつexcelファイルを格納しているフォルダとwpathは同一のフォルダです。 (このマクロをもつExcelファイルもcsvファイルも同一フォルダに格納しています)
tatsu99

2020/04/15 11:44

それだとえらーになります。 違うようにしてください。そのほうが判らない場合は、再度質問してください。 その場合は、具体的なB3の値、このマクロをもつexcelファイルのフォルダ名も提示してください。
momogorira

2020/04/15 11:53

同一フォルダ内だと Open ThisWorkbook.Path & "\output.csv" For Append As #1 Open wpath & "\" & wfile For Input As #2 ここで既に開いているフォルダをまた開こうとするのでエラーとなる、というイメージですね。 かしこまりました。職場で使用しているExcelの為、明日違うフォルダに移して試してみます。 迅速でわかりやすいご回答を頂きましてありがとうございました!
momogorira

2020/04/16 00:48

tatsu99様 違うフォルダに移したところ、ファイル数が増えても正常に処理完了できました。 大変助かりました。ありがとうございました!
momogorira

2020/04/18 10:39

fiveHundred様 解決の際の方法が間違っており、また修正が遅くなり申し訳ございません。 自己解決に致しました。 ご指摘を頂きましてありがとうございました。
guest

回答1

0

自己解決

★情報の追加・修正依頼欄にてご提示頂いた内容で解決しました★
【原因】
このコードを持つExcelファイルを保存しているフォルダと、wpathのフォルダが同じだった為。
【解決策】
このコードを持つExcelファイルを別のフォルダへ移動する。
→エラーが発生せず、正常に処理が完了しました。

投稿2020/04/18 10:35

momogorira

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問