- ベストアンサー
VBAで、テキストファイルの削除はどうするのでしょうか。
VBA で、あるディレクトリにあらかじめ作成、保存してあるテキストファイルを、Input Box からそのファイル名を指定してExcel に読込み、所定の処理をした後、元のテキストファイルをディレクトリ上から削除するにはどうしたらよいでしょうか。 いつも決まった名前のファイルを削除するのは Kill コマンドで容易にできたのですが、InputBox から入力した任意の名前のファイルを削除する方法を教えていただけませんか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 例えば、こんなことですか? Dim myPath As String Dim fn As String myPath = ThisWorkbook.Path & "\" fn = InputBox("ファイル名を入力してください") If fn = "" Then Exit Sub '拡張子は、".txt" If InStr(fn, ".txt") = 0 Then fn = fn & ".txt" If Dir(myPath & fn) <> "" Then Kill myPath & fn Else MsgBox fn & "はありません。", vbCritical End If こちらは、ご質問者の、パス、ファイル名の造りなど、状況が分からないのでGetOpenFilenameを使ったのです。初歩的な内容ですが、これで問題が残るのでしたら、何がどのように、お分かりにならないのか、情報やご自身のマクロを提供してください。 >この「製造番号」名のファイルを VBA による所定の処理が終了した時点で、 >ディレクトリ上から確実に削除したいのです。 削除の場合もダイアログ方式ではなく自動的に行いたいのですが。 製品番号とファイル名の関連性とか、こちらでは分からないし、実際のマクロも見ていないので、今の段階では分かりません。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 以下のように、ダイアログを使ったらいかがですか? 入力よりも、ファイル名を確認できて楽です。 Dim FileName As String FileName = Application.GetOpenFilename("テキストファイル*.txt(*.txt),*.txt") If FileName = "False" Then Exit Sub 後は、ご自分のマクロにつなげてください。
補足
早速のご回答ありがとうございます。教えていただいたダイアログを使う方法は確かにファイルを確認できてよさそうなのですが、入力される文字列は製品の製造番号で、製品を見ながら入力するのでファイル名を確認できる必要はありません。 むしろ担当者が誤りをおかす心配があるのです。 この「製造番号」名のファイルを VBA による所定の処理が終了した時点で、ディレクトリ上から確実に削除したいのです。 削除の場合もダイアログ方式ではなく自動的に行いたいのですが。
お礼
質問が具体性を欠いていたようで、申し訳ありません。 上記にお示しいただいた方法でうまく行きました。 今回のケースでは Path は固定なので、そのパス名を myPath に当てはめて実行してずばり解決いたしました。 ありがとうございました。 因みに製造番号のファイル名は nnnnn.txt (nnnnnは5桁の整数)で、このファイルが C:\Dir-1\nnnnn.txt として格納されています。 このファイルをExcelに取り込み、Excel上の処理を行った後、最後にこの nnnnn.txt を削除するというものです。