Ping情報ファイル作成後削除するプログラムを作っているのですが
70:ファイルを書き込めませんというエラーが出て
うまくいきません。どなたかうまくいく方法を教えて下さい。
以下ソースです
環境6.0 WinXP
Private Sub Command1_Click()
Dim Fso As New FileSystemObject
'ファイルを作成
Call Shell("cmd.exe /C ping > c:\sample.txt", 0)
'ファイルを削除
Fso.DeleteFile "c:\sample.txt"
End Sub
CMDが終了する前に
削除しようとしているからですね。
Shellは実行が終了しなくても次の処理にいきますので。。
>Call Shell("cmd.exe /C ping > c:\sample.txt", 0)
これのかわりに
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /C ping > c:\sample.txt",0,True
あんさん返答ありがとうございます。
教えて頂いたやりかたでできたのですが、
ボタンをダブルクリックするとエラーが出てしまいます
回避する方法は無いでしょうか?
>Shellは実行が終了しなくても次の処理にいきますので。。
ならば、実行が終了するのを待ってから削除すればよいのでは?
ってことで、花ちゃん さんのサイトのサンプル
他のプログラムの終了を待つ(Shell関数で起動した)
を確認することをお勧めします。
ダブルクリックした時、二重処理をしないように
すればいいのかな
とりあえずフラグでやってみました。
Private Sub Command1_Click()
Dim Fso As New FileSystemObject
Static FLAG As Boolean
If FLAG Then Exit Sub
FLAG = True
'ファイルを作成
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /C ping > c:\sample.txt",0,True
'ファイルを削除
Fso.DeleteFile "c:\sample.txt"
FLAG = False
End Sub
とりあえずボタンのenableでやることにしました
ありがとうございました
ツイート | ![]() |