Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


8229 / 13644 ツリー ←次へ | 前へ→

【34505】ネットワークが有効であるかどうか Seitakuki 06/2/4(土) 11:53 質問[未読]
【34506】Re:ネットワークが有効であるかどうか ichinose 06/2/4(土) 12:28 発言[未読]
【34507】Re:ネットワークが有効であるかどうか Seitakuki 06/2/4(土) 12:45 お礼[未読]
【34509】Re:ネットワークが有効であるかどうか Kein 06/2/4(土) 13:14 回答[未読]
【34510】Re:ネットワークが有効であるかどうか Seitakuki 06/2/4(土) 14:19 お礼[未読]

【34505】ネットワークが有効であるかどうか
質問  Seitakuki  - 06/2/4(土) 11:53 -

引用なし
パスワード
   こんにちは。少々困っていますので、お助け下さい。

ネットワークが有効であるかどうか、チェックをしたいのですが、方法はありますか?

私なりに考えて、エラー処理でやればいいかなと思ったのですが、私のやり方のせいか、
ON ERRORでトラップが全くできません。ネット上で探した、エラー処理のサンプルも、
実行時エラーで中断してしまいます。何かExcelの設定とかいりますか?
例えば下の様な文を書いてもだめでした。

Sub ETEST()
  On Error GoTo AAA
    Dir ("\\ありえないパス\")
  Exit Sub
AAA:
  MsgBox "この文章が出て欲しいんです"
End Sub

私の大呆けだといいのですが…。何か解りましたらお教え下さい。お願いします。

【34506】Re:ネットワークが有効であるかどうか
発言  ichinose  - 06/2/4(土) 12:28 -

引用なし
パスワード
   ▼Seitakuki さん:
こんにちは。


>
>ネットワークが有効であるかどうか、チェックをしたいのですが、方法はありますか?
>
>私なりに考えて、エラー処理でやればいいかなと思ったのですが、私のやり方のせいか、
>ON ERRORでトラップが全くできません。ネット上で探した、エラー処理のサンプルも、
>実行時エラーで中断してしまいます。何かExcelの設定とかいりますか?
>例えば下の様な文を書いてもだめでした。
>
>Sub ETEST()
>  On Error GoTo AAA
>    Dir ("\\ありえないパス\")
>  Exit Sub
>AAA:
>  MsgBox "この文章が出て欲しいんです"
>End Sub
>
>私の大呆けだといいのですが…。何か解りましたらお教え下さい。お願いします。

・VBEにて、「ツール」---「オプション」とクリックして下さい

・「全般」タブの「エラートラップ」を「エラー処理対象外のエラーで中断」を
  選択して下さい。

これでもエラーが発生しますか?

【34507】Re:ネットワークが有効であるかどうか
お礼  Seitakuki  - 06/2/4(土) 12:45 -

引用なし
パスワード
   早速の回答ありがとうございます^^

エラー処理に行くようになりました。
こんなのを設定する所があったんですね(汗)

初歩的な事を聞いてしまって、申し訳ありませんでした。
非常に助かりました。ありがとうございます。

【34509】Re:ネットワークが有効であるかどうか
回答  Kein  - 06/2/4(土) 13:14 -

引用なし
パスワード
   解決しているようですが、ネットワークのテストなら Dir関数 よりも

Sub Ck_NetWork()
  Dim WshShell As Object
  Dim Def_Dir As String
  Const Change_Dir As String = "\\Sotec\e\"
 
  Set WshShell = CreateObject("WScript.Shell")
  Def_Dir = WshShell.CurrentDirectory
  On Error Resume Next
  WshShell.CurrentDirectory = Change_Dir
  If Err.Number <> 0 Then
   MsgBox "現在ネットワークに接続されていません", 48
   Err.Clear
  Else
   MsgBox "現在のカレントフォルダーは" & vbLf & _
   Change_Dir, 64
   WshShell.CurrentDirectory = Def_Dir
  End If
  Set WshShell = Nothing
End Sub

という、WSHのコードの方が良いと思います。さらにDOSのPingコマンドなら
接続テスト専用ということで、より適切ではないでしょーか ? こんなコード
になります。

Sub Ck_NetWork2()
  Dim WshShell As Object
  Dim Ping_St As String
  Const PING_CMD = "ping -n 1 -w 100 192.168.123.119"
 
  Set WshShell = CreateObject("WScript.Shell")
  Ping_St = WshShell.Exec(PING_CMD).StdOut.ReadAll
  If InStr(1, Ping_St, "Lost = 0") > 0 Then
   MsgBox "ネットワークに接続しています", 64
  Else
   MsgBox "現在ネットワークに接続されていません", 48
  End If
  Set WshShell = Nothing
End Sub

定数の文字列の中の
>192.168.123.119
は、ネットワーク上のPCのIPアドレスです。IPアドレスを取得するには、そのPCで
DOSプロンプトを立ち上げ、IPCONFIG というコマンドを打ち込んで Enter すれば
表示されます。それをメモしておいて定数の文字列に使ってます。

【34510】Re:ネットワークが有効であるかどうか
お礼  Seitakuki  - 06/2/4(土) 14:19 -

引用なし
パスワード
   おおお、求めていたものです。

WSHですか…。参照設定の「Windows Script Host Object Model」というやつですかね。
全く知らないので、勉強させて頂きます。

pingコマンドは知っていましたが、VBAで使う手法は全く考え付きませんでした。
ただ、DOS窓が開いてしまうのは、我がままなんですが、好きになれません(汗)

たぶん、前者の手法を使わせて頂くとは思いますが、2つ手法を書いて頂き、勉強になりました。
ほんと、感謝感激です^^ ありがとうございました。

8229 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free