
VBScriptで指定フォルダにあるファイルに対して処理を行っています。
その指定フォルダにファイルがコピー中であったり、
他のプロセスがファイルを作成中だったりする場合、
このスクリプトを実行すると、コピー中や作成中のファイルに対して処理を行ってしまうため、
正しく処理ができません。
コピー中だったり、他のプロセスが作成や編集を行っている場合、
そのファイルに対しては処理を行わず、次回実行時に編集中でなければ
処理を行うようにしたいと思います。
コピー中だったり、他のプロセスが作成や編集を行っているかどうかを
VBScriptで識別する方法を探したのですが、分からなかったため、教えてください。
なお、ファイルは数GBのものが多く、他プロセスが作成を行っている場合、
30~3時間程度行っています。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
単にエラー対応処理を書いたらいいだけでは?
dim ErrorCodeSave
on error resume next
open ・・・
ErrorCodeSave = Err.Number
On Error Goto 0
if ErrorCodeSave > 0 then
if ErrorCodeSave = xx(具体的な数値は実行してみて確認してください) then
msgbox("処理中。時間を置いてから再実行してください")
else
Err.Raise ErrorCodeSave
end if
end if
みたいな感じで。
参考:
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh0 …
No.2
- 回答日時:
こちらも古典的な方法ですが排他で開いてエラーにならなかったら未使用
と判断する・・AccessのVBA中で拝借していたものです
http://oshiete.goo.ne.jp/qa/2543381.html
でも、こういったのは微妙なタイミングで使い出したりしちゃってくれるので
難しいですね。
No.1
- 回答日時:
昔からの手法では、
別のファイルを用意し、
長時間処理するプログラムに、処理が終わったら
処理が終了したことを書き込んでもらって、
そちらを確認して次の処理を実行することで対応
します。
この回答への補足
ご回答ありがとうございます!
回答つかないかと思ってたので、うれしいです!
>長時間処理するプログラムに、処理が終わったら
>処理が終了したことを書き込んでもらって、
ファイルをコピーしたり、作成したりする他プロセスは自作ではないので、
「処理が終わったら書き込んでもらう」という処理を追加することができません。
ファイルのSizeやDateLastAccessedプロパティなどで確認してみましたが、
Sizeはコピー開始時にコピー元のサイズになってしまっていますし、
DateLastAccessedはコピー開始後はコピー終了するまで更新されないみたいです。
他に何か案はないものでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBでExcelが起動されているか知りたい
Visual Basic(VBA)
-
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
VBSでExcelのオープン確認
Visual Basic(VBA)
-
-
4
ファイルやフォルダの有無、他のユーザーの使用状況を調べたい
Visual Basic(VBA)
-
5
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
6
VBでファイルが開かれているかどうかを確認したい
Visual Basic(VBA)
-
7
VBSの処理中一旦処理を止めて再開させたい。
Visual Basic(VBA)
-
8
Excel VBAでほかのアプリケーションで使用中(ロック)のファイルを上書き保存したい
その他(プログラミング・Web制作)
-
9
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
10
コマンドプロンプトで、指定したファイルが開いているかを判別をループする方法
その他(プログラミング・Web制作)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
別インスタンスのエクセルを制御したい
Excel(エクセル)
-
13
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
14
タスクスケジューラからショートカットを起動させるには?
その他(プログラミング・Web制作)
-
15
OpenTextFile で書き込みできません。
Microsoft ASP
-
16
Excelで隠れてしまった図やテキストボックスを探す方法
Excel(エクセル)
-
17
テキストボックスのカーソル位置の取得・設定方法
Visual Basic(VBA)
-
18
コンソールアプリケーションのコマンドプロンプト画面を非表示
Visual Basic(VBA)
-
19
【Excel VBA】マクロでExcel自体を終了させたい
Excel(エクセル)
-
20
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
特定の名前のオートシェイプの...
-
【C#】Page_Loadさせない方法に...
-
どう増強すべきか
-
シェルスクリプトでファイル内...
-
【VBA】エラー処理で別プロシー...
-
VB.NET SPRED(チェックボック...
-
順番に処理させたい
-
VBAでBook読み込み時の非表示方...
-
Excel VBA セルの名前があるか...
-
特定のファイルを他のプロセス...
-
シグナル 6(SIGABRT)とは?
-
入力した値が不正というよりイ...
-
VBA For Each 〜 複数条件について
-
途中で処理を中断させたい (ア...
-
C# 指定時間(秒間)の間処理を...
-
vbaのエラー対応(実行時エラー...
-
VisualBasic6でドラック&ドロ...
-
エクセル画面のちらつきなくす...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
vbaのエラー対応(実行時エラー...
-
シグナル 6(SIGABRT)とは?
-
IF文に時間(何時から何時ま...
-
マクロで、次のコードへ行く前...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
特定の名前のオートシェイプの...
-
途中で処理を中断させたい (ア...
-
特定のファイルを他のプロセス...
-
順番に処理させたい
-
Word VBA。各マクロの間に待ち...
-
StatusStripの表示が更新されな...
-
ドリブン??
-
ExcelのVBAで、選択したファイ...
-
RaiseEventのメリット
-
【VBA】エラー処理で別プロシー...
-
エクセルVBAでロックをかけたい
-
どうやってもFor文を抜けてしま...
おすすめ情報