ブライアンは、他のサポートワークブックを非常に短時間開いてから閉じ、変更を保存する複雑なワークブックを持っています。彼は彼のマクロを使用する3人のオフィスを持っており、2人がhttp://www.formville.com/C17_free-purchase-orders.html [購入注文]を取得しようとしているときに競合が発生することがあります

同時に番号。これにより、POワークブックが2回目に「読み取り専用」モードで開かれ、ユーザーが混乱します。ブライアンは、ターゲットワークブックが別のユーザーによって既に開かれている場合に「ワークブックを開く」コマンドを停止するVBAコードの行があるかどうか疑問に思います。そうすれば、潜在的な問題が発生する前にそれを見つけることができます。

コードを開いた後、ブックが読み取り専用モードで開かれたかどうかを確認する方がはるかに簡単です。もしそうなら、あなたはあなたの状況に適切な行動を取ることができます。 (たとえば、ブックを閉じて、しばらく待ってから、操作とテストを再試行できます。)読み取り専用ステータスを確認する方法は次のとおりです。

Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx")



If wkBook1.ReadOnly Then     wkBook1.Close False End If

必要な情報を生成するのはReadOnlyプロパティであることに注意してください。事前にファイルを確認する必要がある場合は、VBAで使用可能なファイルアクセスステートメントのいくつかを使用してみてください。それが次の関数が行うことです。

Function FileIsLocked(strFileName As String) As Boolean     FileIsLocked = False     On Error Resume Next     Open strFileName For Binary Access Read Write Lock Read Write As #1     Close #1

' If an error occurs, the document is currently open     If Err.Number <> 0 Then        FileIsLocked = True        Err.Clear     End If End Function

この関数を使用するには、チェックするブックの名前(フルパスを含む)を渡します。この関数は、ファイルがロックされている場合はTrueを返し、ロックされていない場合はFalseを返します。ただし、この関数がファイルをチェックしてから実際にファイルを開こうとするまで、他の誰かがファイルを開いた可能性があることに注意してください。したがって、最初のアプローチ(開こうとした後にチェックする)が使用するのに最適なアプローチである可能性があります。)

また、他のブックを共有ブックとして保存することもできることに注意してください。これにより、複数のユーザーが問題なく開くことができます。もちろん、このアプローチがワークブックに保存したいデータにどのように影響するかを確認する必要があります。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(5831)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。