- ベストアンサー
ファイルの2重に開いた場合の処理(エクセルVBA)
- エクセルVBAにおいて、複数のエクセルファイルを順に開きシート内容を更新する際、ファイルが2重に開かれてしまう現象が発生することがあります。この現象を回避する方法として、オプションを設定することができます。Read-onlyでファイルを開く場合や、ダイアログが表示される場合、適切なオプションを使用して処理することが重要です。
- 2重に開かれているファイルの一覧をシートに保存し、後で処理を行うためには、Thisworkbookのシートに情報を保存することができます。また、2重に開かれたファイルの使用者名も取得することができます。
- 2重に開かれたファイルのトラップ方法はいくつかありますが、Read-onlyで開く場合やダイアログが表示される場合に備えて、適切な対策を講じる必要があります。適切なオプションの設定やエラーハンドリングの使用を通じて、問題を解決することができます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足です。#1 の参考URLを参考に関数を書きましたが、 Open strFULLPATH For Binary Access Write As #n ではなくて、 Open strFULLPATH For Binary Lock Write As #n とした方が今回の目的にはよりマッチしていると思います。
その他の回答 (1)
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。KenKen_SP です。 > ファイルの2重で開くのトラップってどうすれば出来るのでしょうか? 【参考】MS サポートオンライン より [XL]他ユーザーが使用中のファイルを開く時任意のメッセージを表示する方法 http://support.microsoft.com/default.aspx?scid=kb;ja;402465 これを次のような関数にしてチェックします。 'ファイルが既に開かれているか確認する関数 Function FILE_OPENED(ByRef strFULLPATH As String) As Boolean Dim n As Long n = FreeFile On Error Resume Next Open strFULLPATH For Binary Access Write As #n Close #n If Err.Number > 0 Then FILE_OPENED = True End If On Error GoTo 0 End Function 【使い方の例】 IF FILE_OPENED(.FoundFiles(iCount)) Then Msgbox "ファイルは使用中です。" End IF とりあえず。
補足
いつも、いつも、いつも丁寧なご指導有難う御座います。毎回毎回、新しいことを教えて頂き、恐縮いたします。マイクロソフトも色々と情報を提供し手いるのですね?与えられている情報が全く活用できていないことを、またもや、痛感いたしました。 ほんのちょっとのアレンジが大切である!もっともだと思いました。 本当に、本当に有難う御座います。 今後とも宜しくお願い致します。 お礼の点数を割り振ることしか出来ないことに、申し訳なく感じます。