- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:サーバー上のブックを開けない時(エクセルVBA))
エクセルVBAでサーバー上のブックを開けない場合の対処方法
このQ&Aのポイント
- ネットワーク障害などでサーバー上のエクセルブックが開けない場合、エラーメッセージが表示されるまで待たされる問題があります。その間、Ctrl-Breakも利用できないため、問題解決に時間がかかってしまいます。この問題を回避し、早い時間にエラーメッセージを表示してコントロールを戻す方法はありますか?
- 以前投稿した質問で、同じ問題について質問したことがありますが、当時はネットワークの問題と考えていました。回答ではVBAによるpingの発信と受信を行って解決しようとしましたが、実際にはpingの結果はすぐに戻ってくることがわかりました。さらに、Dir関数でも問題なくコントロールが戻ってくることが確認されました。誰かがファイルを排他的に使用しているために発生していると思われるこの問題を回避し、プログラムでメッセージを表示してコントロールを戻す方法はありますか?
- 問題の詳細として、サーバー上のエクセルブックが開けない状態が長く続く場合、エクセルが砂時計のようになり、何も受け付けなくなる問題があります。この問題を回避する方法を教えてください。特定のファイルが使用できなくても構いません。
- みんなの回答 (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
お礼
回答ありがとうございます。 使用するのは職場です。 トライするのは3連休の後になると思います。 結果は"補足"で報告いたします。
補足
教えていただいたロジックは入れてありますが、もう1ヶ月以上経ちますが、このような事象は発生しませんでした。 この質問は〆させていただきたいと思います。 どうもありがとうございました。