• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サーバー上のブックを開けない時(エクセルVBA))

エクセルVBAでサーバー上のブックを開けない場合の対処方法

このQ&Aのポイント
  • ネットワーク障害などでサーバー上のエクセルブックが開けない場合、エラーメッセージが表示されるまで待たされる問題があります。その間、Ctrl-Breakも利用できないため、問題解決に時間がかかってしまいます。この問題を回避し、早い時間にエラーメッセージを表示してコントロールを戻す方法はありますか?
  • 以前投稿した質問で、同じ問題について質問したことがありますが、当時はネットワークの問題と考えていました。回答ではVBAによるpingの発信と受信を行って解決しようとしましたが、実際にはpingの結果はすぐに戻ってくることがわかりました。さらに、Dir関数でも問題なくコントロールが戻ってくることが確認されました。誰かがファイルを排他的に使用しているために発生していると思われるこの問題を回避し、プログラムでメッセージを表示してコントロールを戻す方法はありますか?
  • 問題の詳細として、サーバー上のエクセルブックが開けない状態が長く続く場合、エクセルが砂時計のようになり、何も受け付けなくなる問題があります。この問題を回避する方法を教えてください。特定のファイルが使用できなくても構いません。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 排他的オープンなら、以下のようにすれば、チェック出来ると思うのです。 >Dir関数で該当エクセルファイルを指定しても、直ちにコントロールが戻ります。 まあ、VBAでは、それをコントロールとは言わないけれども、意味は分かります。 ------------------------------------------------- Sub BookEnableChecker() Dim MyPath As String Dim myFno As Integer Const Fname As String = "TestBook1.xls" MyPath = "\\サーバー名 \○○\" If Dir(MyPath & Fname) <> "" Then  myFno = FreeFile  On Error Resume Next  Open MyPath & Fname For Binary Lock Read Write As #myFno  Close #myFno End If  If Err.Number = 70 Then   MsgBox "ブックは開いています", 16  ElseIf Err.Number = 0 Then   MsgBox "ブックは編集できます。", 64  Else   MsgBox "ブックを調べてください", 32  End If  On Error GoTo 0 End Sub

believe_me
質問者

お礼

回答ありがとうございます。 使用するのは職場です。 トライするのは3連休の後になると思います。 結果は"補足"で報告いたします。

believe_me
質問者

補足

教えていただいたロジックは入れてありますが、もう1ヶ月以上経ちますが、このような事象は発生しませんでした。 この質問は〆させていただきたいと思います。 どうもありがとうございました。

関連するQ&A