電子書籍の厳選無料作品が豊富!

ネットワーク障害などでサーバー上のエクセルブックが開けない時、かなり待たされてから次のメッセージが出ます。
実行時エラー'1004' 'Open'メソッドは失敗しました。'Workbooks'オブジェクト
しかもその間、Ctrl-Breakも受け付けてくれません。
正確に待ち時間は計ったわけではありませんが、10分くらいでしょうか。
なんとかこれを回避して、早い時間にエラーメッセージを出してコントロールを戻すことはできないでしょうか?
以下のVBAでオープンしています。
Workbooks.Open Filename:=myFileName, Readonly:=True
よろしくお願い申し上げます。

A 回答 (1件)

> なんとかこれを回避して、早い時間にエラーメッセージを出して


> コントロールを戻すことはできないでしょうか?

ネットワークに問題があるなら、事前に Dir などで調べても恐らく同様に
時間がかかってしまうかもしれません。ただ、Workbooks.Open よりは
早く結果が返ってくるかもしれませんので、お試し下さい。

 --> 正しいパスを渡した Dir の結果が "" なら HOST が生きていない
 --> と判定する

もう一つ方法を。

ネットワークの異常を調べる際には、まずコマンドプロンプトで
Ping コマンドを使用し、目的の HOST から応答があるか調べます。

この結果に応じて Workbooks.Open してみれば? VBA でやるなら

 1. DOS コマンドのリダイレクト
   http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
   --> 結果に Reply という文字列が含まれれば OK、Timeout なら NG
 2. API
   http://www.sanryu.net/acc/tips/tips283.htm
 3. WMI(注意)WinXPなど特定のOSに限定されます
   http://www.microsoft.com/japan/technet/scriptcen …
   http://pwp1.atcms.jp/mokurin/index.php?cmd=read& …

などの方法があります。サンプルを書こうかと思いましたが、Google
で [ping vba] をキーワードで調べたら上記のように良質のサンプルが
ヒットしましたので、参考 URL のご紹介にしときます。

ただし、、セキュリティーソフトなどの影響で応答をかえさない PC が
有りますので、考慮する必要がありますけどね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
使用環境を忘れていました。
Windows2000Pro Office2000がメインです。
サブにWindowsXP Pro Office2003を使用しています。
3の方法がすっきりしていいのですが、Window2000では動きませんでした。
2又は1の方法でやってみたいと思います。

お礼日時:2007/12/21 20:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報