• ベストアンサー

VBAで、テキストファイルの削除はどうするのでしょうか。

VBA で、あるディレクトリにあらかじめ作成、保存してあるテキストファイルを、Input Box からそのファイル名を指定してExcel に読込み、所定の処理をした後、元のテキストファイルをディレクトリ上から削除するにはどうしたらよいでしょうか。 いつも決まった名前のファイルを削除するのは Kill コマンドで容易にできたのですが、InputBox から入力した任意の名前のファイルを削除する方法を教えていただけませんか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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 による所定の処理が終了した時点で、 >ディレクトリ上から確実に削除したいのです。 削除の場合もダイアログ方式ではなく自動的に行いたいのですが。 製品番号とファイル名の関連性とか、こちらでは分からないし、実際のマクロも見ていないので、今の段階では分かりません。

eagle-birdie
質問者

お礼

質問が具体性を欠いていたようで、申し訳ありません。 上記にお示しいただいた方法でうまく行きました。 今回のケースでは Path は固定なので、そのパス名を myPath に当てはめて実行してずばり解決いたしました。 ありがとうございました。 因みに製造番号のファイル名は nnnnn.txt (nnnnnは5桁の整数)で、このファイルが C:\Dir-1\nnnnn.txt として格納されています。 このファイルをExcelに取り込み、Excel上の処理を行った後、最後にこの nnnnn.txt を削除するというものです。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 以下のように、ダイアログを使ったらいかがですか? 入力よりも、ファイル名を確認できて楽です。 Dim FileName As String FileName = Application.GetOpenFilename("テキストファイル*.txt(*.txt),*.txt") If FileName = "False" Then Exit Sub 後は、ご自分のマクロにつなげてください。

eagle-birdie
質問者

補足

早速のご回答ありがとうございます。教えていただいたダイアログを使う方法は確かにファイルを確認できてよさそうなのですが、入力される文字列は製品の製造番号で、製品を見ながら入力するのでファイル名を確認できる必要はありません。 むしろ担当者が誤りをおかす心配があるのです。  この「製造番号」名のファイルを VBA による所定の処理が終了した時点で、ディレクトリ上から確実に削除したいのです。 削除の場合もダイアログ方式ではなく自動的に行いたいのですが。

関連するQ&A

  • access VBA でテキストファイルの編集をしたい

    既に退社した前任者の代から受注データを本社のサーバからダウンロードしてエクセルで加工するファイルがあるのですが、日々更新されるのも不都合が出てきましたのでなんとかアクセスのデータに日々蓄積したくなりました。 毎日日付を含む名前のファイルがアップされFTPで○月○日のファイルを受信するのですが、バッチファイルとテキストファイルをを使ってFTPの受信をしていました。 1、VBAでテキストファイルの日付を変更する。(任意の日付) 2、VBAからバッチファイルを実行し、先に変更した日付のファイルを受信する。 これをアクセスで同じことをしたいです。 フォームにテキストボックスを作って、そこに日付を入れるようにして、VBAでテキストファイルの日付をテキストボックスにある日付に変更して、それから・・・まだ工程はあるのですが、まずテキストファイルが変更できないと先へ進めません。 エクセルのVBAは少しは判るのですが、accessVBAは初心者です。 よろしくお願いします

  • WORD VBAでテキストファイルを指定して...

    WORD2002を使っています。 WORD VBAでダイアログボックスを表示させ、オープンするファイルを指定しようとしています。 Documents.Open FileName:=dlg.Name, ReadOnly:=True でオープンするファイルがテキストファイルだけなので、ダイアログボックスに表示するファイルをテキストファイルだけにしたいと思っています。 どのように変更すればいいのでしょうか?

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • EXCEL 2003のVBAでテキストファイルの取り込み方

    EXCEL 2003のVBAでテキストファイルの取り込み方 EXCEL 2003のVBAでテキストファイルのみをとりこむものを組もうと思います。 - 読み込むテキストファイル名は一定の決まりがあります。AAxxxx.txt あるいは ZZxxx.txt といった感じで先頭文字はAAまたはZZで中のxxxは数字の可変(日付)です。 - Directoryはどこに入るか決まりがありません。(このマクロを使用するユーザーがどこのDirectoryにテキストファイルを保存しているかわからないため) FILEN = Application.GetOpenFilename If FILEN = False Then Exit Sub End If Workbooks.OpenText Filename:=FILEN でやると、Directoryの問題は解決しますが、テキストファイル名を絞り込めません いい方法をご教示いただければ助かります。

  • VBAでのファイル削除処理

    excelの表の第一列目にファイル名が複数(数は任意)かかれたリストがあるとします.この表を表Aと呼ぶことにします. 別にフォルダーがあり,そのフォルダーの中に複数(任意)のファイルが入っているとします.このフォルダーをフォルダーBとします. 次の処理を行うプログラムを考えていますが,VBAで可能でしょうか.できるとすれば,基本的な部分だけでも教えて頂ければありがたいのですが. フォルダーBを指定して,さらに表Aに書かれているxlsファイルを指定して,Bに書かれているファイル名の中に表Aに書かれたファイル名が一致するものがあれば,ファオルダーBの中から削除する.

  • VBAでテキストコピーをする時に

    でテキストファイルの内容をコピーする時に、コピー元のディレクトリと、保存先のディレクトリを毎回指定できるプログラムをVBAで書きたいのですがわかりません。 どなたかご教授いただけないでしょうか?

  • VBAでテキストファイルを最後まで読み込みたい

    テキストファイル内の文章を最後まで読み込みたいのですが、 do  Line Input #1, gyou  処理1 while 条件 で、条件はどのような記述にすればいいのですか? テキストファイルには、改行コードのみの行や、スペースのみの行が混在しています。 また、行数も常に変動するので、 for~nextで予め回数を指定することも出来ません。

  • ゴミ箱に移動するような削除をvbaでしたい

    vbaでkillステートメントを使えばファイルの削除できますが この削除は復元不可能の削除ですよね? そうではなくて、ゴミ箱に移動するような削除をvbaでしたいのですが 可能でしょうか?

  • VBAのループ処理

    エクセルVBAにてテキストボックス、ラベルが複数ある フォームで入力ボタンを(コマンドボタン)クリックした時に 指定した複数のテキストボックス、ラベルをループ処理で空白に したいのですが どのようにすればいいでしょうか?

専門家に質問してみよう