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

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

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

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

Q&A

1回答

1073閲覧

エラー 53 ファイルが見つからないエラー

TD0

総合スコア22

VBA

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

0グッド

0クリップ

投稿2019/06/23 11:54

お世話になります。
定期的に発生するtab区切りテキストファイルをcsvファイルにし、
それを一つのcsvにまとめようとしています。
元のテキストファイルは半角英数字と"_"(アンダーバー)のみです。

後半の結合部分はこちらのサイトから拝借しました。
Filecopyで動作が終了しエラー53が返ってくるのですが、考えられる原因はなんでしょうか。

拝借したVBA個別であれば無論問題なく作動します。
wpath, wfile双方の内容は拝借分と変わらないことを確認しました。
また個別のcsvファイルを作成した後、5秒間動作を止めてから実行してみましたが、結果に変わりはありませんでした。

どうぞよろしくお願いいたします。

VBA

1Sub table_to_merged_csv() 2 3Dim table_name As String 4Dim myfile As Variant 5Dim target As Variant 6Dim name As String, wpath As String 7 8 myfile = Application.GetOpenFilename( _ 9 FileFilter:="table ファイル (*.Table),*.Table", _ 10 MultiSelect:=True) 11 12 13If IsArray(myfile) Then 14 15Application.ScreenUpdating = False 16 17For Each target In myfile 18 Workbooks.OpenText Filename:=target, DataType:=xlDelimited, Comma:=True 19 table_name = ActiveWorkbook.name 20 table_name = Left(table_name, Len(table_name) - 6) 21 table_name = table_name & ".csv" 22 ActiveSheet.Range("A1").CurrentRegion.EntireColumn.AutoFit 23 ActiveWorkbook.SaveAs Filename:=table_name, FileFormat:=xlCSV 24 Workbooks(table_name).Close True 25name = Dir(target) 26wpath = Replace(target, name, "") 27Next target 28 29 Debug.Print (wpath) 30 31wfile = Dir(wpath & "\") 32Debug.Print (wfile) 33flag = 0 34Do While wfile <> "" 35If InStr(wfile, ".csv") Then 36flag = flag + 1 37If flag = 1 Then 38FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "output.csv"v" 39Open ThisWorkbook.Path & "output.csv" For Output As #11 40Close #1 41End If 42Open ThisWorkbook.Path & "output.csv" For Append As #11 43Open wpath & "\" & wfile For Input As #22 44Do Until EOF(2) 45Line Input #2, w_str 46Print #1, w_str 47Loop 48Close #2 49Close #1 50End If 51wfile = Dir() 52Loop 53 54Kill wpath & "*.csv" 55 56Application.ScreenUpdating = True 57 58End If 59 60End Sub

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

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

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

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

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

guest

回答1

0

以下2箇所について、修正してはどうでしょうか。

VBA

1FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "\" & "output.csv" 2'FileCopy wpath & "\" & wfile, ThisWorkbook.Path & "output.csv"v" 3 4Open ThisWorkbook.Path & "\" & "output.csv" For Append As #11 5'Open ThisWorkbook.Path & "output.csv" For Append As #11

投稿2019/06/23 12:36

TanakaHiroaki

総合スコア1063

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

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

TD0

2019/06/23 12:53

回答ありがとうございます。 ご指摘の通り\を挟みましたが、変わらずエラー53です…
TanakaHiroaki

2019/06/23 13:03 編集

そうですか。以下の修正も行ってみてください。 If InStr(wfile, ".csv") > 0 Then 'If InStr(wfile, ".csv") Then そして、変更内容を質問に反映すると他の方からもアドバイスが得やすいと思います。
TD0

2019/06/23 13:09

素早くお返事いただきありがとうございます。 エラーは解消されましたが、output.csvが生成されません。 (flagの数字は作られたcsvの数に合わせて上昇しています。)
TanakaHiroaki

2019/06/23 13:13

関係ないかもしれませんが、以下のように修正し、csvファイルだけを読み込むようにしてはどうでしょうか。 wfile = Dir(wpath & "\" & ”*.csv”) ’wfile = Dir(wpath & "\")
TD0

2019/06/23 13:30

お付き合いいただきありがとうございます。 残念ですが、変化ありませんでした。
TanakaHiroaki

2019/06/23 13:34

お役に立てず申し訳ありません。 質問のコードを最新の内容とし、解決したいことを「output.csv生成」との記載を追加しておくと良いと思います。
TanakaHiroaki

2019/06/23 13:37

それから、OpenとCloseの番号が一致していないのが気になりますね。
TD0

2019/06/23 13:40

ありがとうございます、改めてスレ立てします。
TD0

2019/06/23 13:41

どちらの番号について言及されていますか?
TanakaHiroaki

2019/06/23 13:45 編集

どちらもです。引用元のサイトと番号が変わっています。 Open ThisWorkbook.Path & "\" & "output.csv" For Output As #11 Open wpath & "\" & wfile For Input As #22
TD0

2019/06/23 13:49

気づけば他にも誤字がありますが、Editor上では正しく記載しています。おさわがせしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問