• ベストアンサー

プロセス終了実行後...

このような関数を処理することによって、filepath変数内にある 先頭10個のファイルを削除されますが、 たまにファイルがすべて削除されないまま、最終行で行っている frmFinishダイアログが表示されることがあります。 現状の処理をファイルの削除が完全に完成してから、frmFinishダイアログを 表示させるのには、どのようにソースを改良したらよろしいでしょうか?

  • yo-he
  • お礼率35% (34/97)

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

Kill ステートはOSに削除させるステートです。 制御をOSに渡してみては? For i = 1 To 10   Kill (filepath(i))   DoEvents Next i

yo-he
質問者

お礼

アドバイスありがとうございます。 ご指摘通りコーディングし実行したらうまくいきました。 また何かありましたら宜しくお願いします。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 「このような関数」ってなんですか? あと、「現状の処理」っていうのは? どのような状況か、よくわからないので、補足して下さい。 とりあえず、Forループとかでまわして、1個ずつKillで削除していき、Forループが終了したら、ダイアログを表示させればいいような気がしますが。 あとちなみに、終了後のダイアログは、MsgBoxじゃダメなんですか? では。

yo-he
質問者

補足

大変申し訳ありません。 一番重要なサンプルを載せるを忘れてました。 ------------------------------------------- Function test(filepath As String) Dim i As Integer For i = 1 To 10 Kill (filepath(i)) Next i frmFinish.Show End Function -------------------------------------------- maruru01さんがおっしゃる「このような関数」「現状の処理」と いうのは上記処理にあたります。 それと終了後のダイアログはMsgboxを使おうともファイルが完全に 削除されないまま表示されているようでダメでした。

関連するQ&A

  • 構造体と構造体型の変数宣言箇所

    はじめてborlandC++builder6でプログラムを作っているのですが、構造体と構造体型の変数宣言箇所についてわからないことがあるので質問させてください。 あるフォームのソースファイル(○○○.cpp)内の関数で、自分で定義した構造体を使う場合、ヘッダファイル(○○○.h)に構造体を定義すると、関数内で「変数が未定義」エラーになってしまいます。一方、ソースファイル(○○○.cpp)の先頭に書けばエラーになりません。  ヘッダファイルに変数定義した場合とソース内の先頭に構造体と構造体型変数を定義するのでは何が違ってくるのでしょうか?

  • Perl から csh 実行

    やまとです。 いつもありがとうございます。 Perl + csh を同時(?)に実行する方法を教えてください。 OSはSunです。 具体的にどのような処理を行いたいか簡単に説明しますと。 1.Perlでcshを実行(system関数?)し、cshで環境変数をセット(source)する。 2.cshで環境変数をセットしたら、ファイルを出力する処理が行われます。 3.Perlでcshによって出力されたファイルの内容を画面に表示します。 以下ソースを掲載します。(抜粋して) ================================================== = Perl ( test_perl.pl ) $data = "ABC"; $ret = system(`test_csh.sh $data`); ・ ・ ファイル(test.log)を開き、読込、画面に表示します(まだ作成してません。) ================================================== = Csh ( test_csh.sh ) source test_source.sh echo $1 > test.log ================================================== = test_source.sh setenv CLASSPATH .:/aaa・・・・・・ ↑ PATHの設定を行ってます。 ================================================== 画面に、「ABC」と出力させたいのです。 Perlからcshが実行されていないように思えるのですが、 Perlのsystem関数の使い方が誤っているのでしょうか? それとも、ClassPath等の設定をしなければならないのでしょうか? ちなみにコマンドから、 # test_csh.sh ABC と実行しますと、ファイルが出力され、かつ、sourceも実行されています。 Perlから実行する方法を教えてください。 説明が不十分であれば、補足いたしますのでご指摘ください。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • テキスト操作

    できるかどうか曖昧なのでこの場で質問させていただきます。 VBからテキストに書き込みを行う処理なんですが、 まず 111111 と先頭行に書かれたテキストファイルがあります。 これから新たに先頭行に"2222222"を追加します。 (ここからVBの処理で) 222222 111111 また先頭行に"333333"を追加します。 ここで"11111111"を削除します。 333333 222222 つまりテキストファイルが3行以上に達すると下から削除していく動きです。(ところてん式に押し出すイメージですね) こうゆう動きってVBで可能でしょうか? 僕が調べた限りでは不可能な気がします。 もし、代替案があればご指導いただきたいと思ってます。

  • VBScriptでノートパッド起動

    HTMLのボタン押下イベントで、VBScriptの関数を呼んで その中でノートパッドを開いてます。 VBScriptの関数は、 <Script language = "VBScript"> Sub showReport(FILEPATH) Dim intRtn Dim objShell Set objShell = CreateObject("WScript.Shell") intRtn = objShell.Run("notepad " & FILEPATH, 1, True) Set objShell = Nothing EndSub </Script> です。 ファイルのフルパスを引数で渡して、ノートパッドから開いてます。 この処理を行うと、起動して最初の1回だけ 「このページのActiveXコントロールは、安全ではない可能性があり、ページのほかの部分に影響する可能性があります。ほかの部分に影響しても問題ありませんか?」 というダイアログが表示されてしまいます。 一度「はい」を選択すると、ウィンドウを閉じるまでは出なくなりますが、 また起動した場合はダイアログが表示されます。 このダイアログを表示しない方法を教えていただけますでしょうか? プログラムの記述が悪いのでしょうか? IE6のSP1です。 よろしくお願いします。

  • VBSでバッチファイルを実行したときに

    VBSでbatファイルを起動したときに、 batファイルの実行が完了するまで、 「ただいま、処理中・・・」というような ダイアログボックスを表示し、処理完了後に そのダイアログボックスを消して、次処理へ いくようなスクリプトの記述の仕方がありまし たら教えてください。 よろしくお願いいたします。

  • JOptionPaneの「いいえ」をEnterで

    こんにちは。 現在、JOptionPaneを使って出したダイアログのボタンを エンターキーで選択したときの処理についてこまっています。 「いいえ」のボタンをエンターキーで押すと、 なぜか「はい」を押したときと同じ処理をしてしまうのです。 これを防ぐには、どうすればよいでしょうか? 以下、ソースコードの一部です。 //「はい」「いいえ」の結果を受け取る変数を宣言 int sentaku = 1; //ダイアログボックスを表示する処理 sentaku = JOptionPane.showConfirmDialog (null, "本当にこのイベントを削除しますか?", "削除確認" ,0); //上のダイアログボックスで選択された結果をコンソールに出します。 System.out.println("本当に削除しますか?(0:はい 1:いいえ)→"+sentaku); //ここで、「いいえ」をエンターキーで押すと、sentakuが0を返してしまいます。 //スペースキーで押すと、sentakuは1を返してくれました。

    • ベストアンサー
    • Java
  • 「VBScript」ADODB.Streamにおけるファイル読み込みについて(他

    以下の解決方法をご教授願えませんでしょうか。 宜しくお願いいたします。 前提:ギガバイト単位のテキストファイル(サーバのログファイル)を扱うスクリプトを作成したい。 必須機能:grep機能、動作が軽快で早い事  また、できるだけ外部ツールを使用したくない事(サーバ上に載せる事も視野に入る為) 私が行った事: 1. まずテキストファイルとしてgrepするスクリプトを作成。  方法(1) ReadLineで1行ずつ読み込み、正規表現にてマッチする行を変数に格納  その後、その変数をファイルに書き出ししてみた。   ⇒処理速度が遅すぎて使い物にならない。  方法(2) &演算に処理を食い、速度が遅くなる為、一度ファイルを読み込み  正規表現にてマッチしない行を1度に削除し、新しいファイルに書き出してみた   ⇒テストファイルだと狙った通りに処理がかなり早くなったが、実ファイルが    ギガバイト単位の為、メモリオーバーフローを起こし使い物にならない    (ま、そりゃそうだよねorz)  方法(3) &演算に処理を食うのは避けたい為、ReadLineにて行毎に読み込み、  正規表現にてマッチした行をWriteLineにてファイルに書き出し。   ⇒(1)よりは早くなり、ひとまず完成。ただし、それでも処理が遅いのと    CPUパワーを使う為に処理中他の作業がし辛いのが問題。 2. そこで、1度捨てた(2)の方法を何とか使えないかと思案し、ファイルを   適当なサイズで分割する形にしようかと思い、以下の分割用スクリプトを作成   ⇒でも、結局LoadFromFileにてメモリ上にファイルを展開する為、    メモリオーバーフローを起こす事に。 要は、c言語のfreadみたいな事ができれば解決できると思うのですが… この方法に限らず、何かいい案があればアドバイスをお願いいたします。 以下、バイナリーにて分割するスクリプト Option Explicit Const FilePath = "分割対象ファイルパス" Const ReadLen = 134217728 Dim bytData, intX intX = 0 With CreateObject("ADODB.Stream")  .Open  .Type = 1  .LoadFromFile(FilePath)  .Position = 0  Do Until .EOS   bytData = .Read(ReadLen)   With CreateObject("ADODB.Stream")    .Open    .Type = 1    .Write(bytData)    .SaveToFile FilePath & "." & CStr(intX), 1    .Close   End With   intX = intX + 1  Loop  .Close End With

  • マクロ CSVファイル取込 最終行、最終列の取得

    マクロでCSVファイルを取込むプログラムを作成しております。 最終行を取得するソースまではできたのですが、最終列を取得する処理ができておりません。 教えて頂けないでしょうか。 処理概要 (1)ボタンを押したら、Sheet2にCSVファイルがインポートされる (2)Sheet2に出力されたA2行~A8行とA2行~A8行の最終列までをSheet1のD4行~D10行、D4行~D10行の列にコピー  (3)Sheet2に出力されたA9行目はコピーしない (4)Sheet2に出力されたA10行以降とA10行以降の最終列までをSheet1のA13行以降の最終列までにコピー 現在のソースは(2)、(4)の最終列を取得するソース以外はできています。 (2)、(4)の最終列を取得し、コピーする方法を教えて下さい。 現在のソースです。 Sub READ_TextFile() Dim LoadFileName As String Dim LR As Long '選んだcsvファイルをSheet1に読み込む LoadFileName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv", 1, "読み込むcsvファイルを選んで下さい", False) If LoadFileName = "False" Then Exit Sub Workbooks.Open LoadFileName Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") ActiveWorkbook.Close False 'Sheet2のA2:A8をSheet1のD4を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A2:A8").Copy Worksheets("Sheet1").Range("D4") 'Sheet2のA列のデータのある最終行を取得しLRという変数に入れる LR = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row 'Sheet2のA10からA列の最終行までをSheet1のA13を先頭セルとする範囲にCopy Worksheets("Sheet2").Range("A10:A" & LR).Copy Worksheets("Sheet1").Range("A13") End Sub

  • EXCEL2002で保存せずに終了できません

    EXCEL2002で行削除等内容をいじった後、変更されたファイルを破棄して、元のファイルを残そうとしても、「ファイルは変更されています。保存しますか」のダイアログすら出ず、いきなりBOOKを閉じて上書き保存されてしまいます。再度開いてみると、変更されたBOOKが出てきます。どこで設定すれば保存せずに終了出来るのでしょうか。教えて下さい。

  • shシェルでのファイル操作

    初心者です。 shシェルであるファイルの先頭行及び最終行を削除して別ファイル(新規)に書き出したいのですが、何か良い方法があれば教えてください。 (例) 元ファイル(AAA)の内容 1234567 aaaaaaa bbbbbbb ccccccc 7654321 削除後のファイル(BBB)の内容 aaaaaaa bbbbbbb ccccccc