• ベストアンサー

VB6 使用中ファイルの確認

VB6 使用中ファイルの確認 Visual Basic6.0 でファイル/フォルダ操作をリストを使用して検討していますが ファイルを移動する時など使用中の場合エラーが発生します。 ファイル/フォルダ混在で複数 移動/コピー/削除 などするためエラーで実行されない ものが残ってしまいます。 事前に複数コピーしてエラートラップによる確認も考えたのですが もっと簡単に確認する方法は無いでしょうか?エラー以外で確認出来るのでしょうか?

  • mmac
  • お礼率94% (64/68)

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

  • ベストアンサー
回答No.1

>エラー以外で確認出来るのでしょうか? 基本エラートラップでしか、実現できません。 移動 = 「コピー」+ 「削除」 ですよね? 移動でエラーが発生するかどうかは、削除のタイミングでしか、判定が付きません。 また、読み取りにも排他がかかっているのであれば、コピー処理時にもエラーが発生します。 どうしてもその前にエラーを判定したいというのであれば、、、 1ファイルずつ排他制御でのファイルオープンをして、排他ができるのであれば、削除可能ということとなります。 でも、、、 結果的に全ての階層のファイルを開き、更に排他エラーでのハンドリングをする手段となり、遅い上にエラー発生で判断という、無駄な処理とも言えます。 (一応排他オープンの例) http://okwave.jp/qa/q318115.html の FileChk関数 残念ですが、あきらめましょう。

mmac
質問者

お礼

エラートラップで確認するしかない様ですね。 教えて頂いた、FileChk関数の使用を試してみます。 回答有難う御座いました。

関連するQ&A

  • Batファイルについて

    複数階層のフォルダにまたがって格納されているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルのファイル名の頭(顧客IDになっている)を拾ってリストにしてあります。移動させたいエクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っています。 現在は複数あるフォルダの中に下記のBatファイルと対象リスト.txtをを入れて1フォルダずつ実行していますが、数十個あるフォルダなので作業が大変です。最上階層で出来るようにしたいのです。 FOR /F %%i in (list.txt) do copy %%i "移動先のパス"

  • VB.NET ファイルが使用中か確認する方法

    こんにちは。VB.NETのFramework2.0で開発している者です。 ファイルやフォルダが使用中か確認する方法を探しています。 他のサイトでファイル名、又はフォルダ名が変更できなけれ ば、使用中と判断する方法が紹介されていましたが、できれ ば、実ファイルや実フォルダに変更を加えず、使用中か判断 する方法を探しています。 どのたかご存知の方がいらっしゃいましたら、お教え願いま す。

  • VBのファイル有無の確認の速度

    VB.NET2003なのですが、あるフォルダにファイルを移動したいのですが、 ファイル名が重複しないように移動前にIO.File.Exists(filename)で 確認しているのですが、確認するフォルダにファイルが沢山あると 結果が出るまでに1秒くらいかかってしまいます。 (ファイルは現在10万個くらいあります) 何かもう少し早くなる方法があったら教えて頂きたいです。 OSはWindowsXPです。

  • Batファイルについて教えてください。

    再度質問を出します。宜しくお願いします。 複数階層にまたがっているエクセルファイルをBatファイルでコピー、又は、移動させたいのです。コピー、移動させたいファイルはファイル名の頭(重複しないIDになっている)を拾ってリストにしてあります。エクセルファイルが複数のフォルダに入っているので、最上階層のフォルダでbatファイルを実行できればと思っていますが。

  • VB バックアップとしてファイルをコピーしたい

    VBでアイコンをクリックして実行したいのですが、教えください。 フォルダー名をインプットする そのフォルダー名で新規作成する ファイルをそのフォルダーにコピーする 終了   よろしくお願いします。

  • VB.NETで.xlsファイル読み取り

    dataGridViewにあるフォルダ内の複数.xlsファイルを読み取りして表示したいです。一件の固定パスだったら、できましたけど、複数件は。。。? イメージ図も添付いたします。 よろしくお願いします。 環境: Windows XP Visual studio 2005 VB.NET

  • VB2005 Express Edition 実行ファイルの作成方法について

    Visual Basic Express editionにてプログラムを作成しました。 プロジェクトフォルダー内にできる、実行ファイル(exe)だけを、別のPCに移動させて実行したのですが、移動先のPCには .net frameworkはインストールされてないので、実行できませんでした。 .net frameworkをインストールしなくても、実行することのできるexeファイルの作り方はあるのでしょうか?

  • VB6 CommonDialog フォルダ上書きコピー

    VB6 で CommonDialog を使用し、指定先にフォルダをコピーしたいのですが 同じ名前のフォルダが有る場合、上書き確認が表示されずフォルダ配下に 移動してしまう。 On Error GoTo AAA CommonDialog1.Flags = cdlOFNOverwritePrompt CommonDialog1.ShowSave Set cFso = New FileSystemObject Call cFso.CopyFolder(フォルダ元パス, CommonDialog1.FileName, False) Exit Sub AAA: ファイルの場合は確認ダイアログが開いたのですが、上記の場合上書きも出来ません。 コピー処理が違うのでしょうか?教えて下さい。(コピーは出来ました) ファイルの場合 ⇒ FileCopy フォルダ元パス, CD1.FileName で処理しました。

  • VB6.0でFTPでのファイルの送受信

    VB6.0でFTPでのファイルの送受信(下記(1))をしようと考えております。 尚、コンポーネントは、インターネットトランスファコントロール(Inet)を使用しております。 (1)"リモートサーバーに対して、複数件のファイルを送信し、無事転送が完了したら(リモートサーバー の指定フォルダに送信された複数件のファイルがあるのを確認後)、  クライアント側のファイル(リモートサーバーに送信が済んだファイル)を消す" という処理を考えております。 ここで、質問なのですが (1)vbを使ったFTP転送で、複数件のファイルを一括転送(mputコマンドの使用)は、可能か?  (2)もし、(1)が不可能の場合、    "送信するファイルをputコマンドで1つ送って、リモート側にそのファイルがあるのを    getコマンドで確認して、もしgetであれば、クライアント側のそのファイルを消す" という処理を送信するファイル数分繰り返すことになるんですか?        1つのファイルの場合に、Inet1_State_Changeイベントで、ループさせstate = 12 の時( リモート側に正常に送信されたと考えて)、クライアント側のファイルを消していいのでしょうか?    VBのヘルプを見ると、state = 12 は、get処理で使用するというようなことを書いてありますが。     以上 

  • VB40032.DLLについて

    あるプログラムを実行するにあたり下記のような文が掲載してありました。 「このプログラムを実行するためにはVB40032.DLL(ビジュアルベーシックのダイナミックリンクライブラリー)が必要です。 あらかじめインストールされているパソコンではその場で実行できます。 実行してみて「DLLが見つかりません」等のエラーが出た場合は以下の操作を行ってください。 VB40032.DLLをダウンロードし¥WINDOWS\system32フォルダへ(このフォルダーがない場合は¥WINDOWS\systemフォルダ)に保存します。」 実際に¥WINDOWS\system32フォルダに保存しようとしたら「この場所に保存するアクセス許可がありません。管理者に連絡してアクセス許可を取得してください。」というメッセージになりました。ちなみにOSはWindows7です。 どうすればよろしいでしょうか?

専門家に質問してみよう