[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー処理』(サラサラ)
エクセルはこのようにファイルを開いたときに存在しない場合と2回クリックした場合のエラー処理になります。
Private Sub JTB_Click() Dim buf As String, wb As Workbook Const Target As String = "サーバー.xls" ''ファイルの存在チェック buf = Dir(Target) If buf = "" Then MsgBox Target & vbCrLf & "は存在しません", vbExclamation Exit Sub End If ''同名ブックのチェック For Each wb In Workbooks If wb.Name = buf Then MsgBox buf & vbCrLf & "はすでに開いています", vbExclamation Exit Sub End If Next wb ''ここでブックを開く Workbooks.Open Target End Sub
ワードを開いた場合も同様にしたいのですがどうしたら宜しいですか? Private Sub CommandButton4_Click() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String
フルパス = "サバー.doc" 'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動する ワード.Visible = True 'Wordを表示する Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub
インターネットを開いたときも同じようにしたいのです。 Private Sub CommandButton1_Click() Dim URL As String, IE As Object Set IE = CreateObject("InternetExplorer.Application") URL = "http://www.greens.co.jp/yoax.aspx" With IE .Navigate (URL) .Visible = True End With Set IE = Nothing End Sub
教えて頂けたら幸いです。宜しくお願いします。
Private Sub CommandButton4_Click() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String Dim buf As String
フルパス = "C:\Users\miyahorinn\Documents\ワード\報告書0913.doc" 'フルパスを作成 buf = Dir(フルパス) If buf = "" Then MsgBox フルパス & vbCrLf & "は存在しません", vbExclamation Exit Sub Else Set ワード = CreateObject("Word.Application") 'Wordを起動する ワード.Visible = True 'Wordを表示する Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End If
End Sub 文書を開く部分だけ。 (みやほりん)
IEなどもどうしたらいいのでしょうか?
宜しくお願いします。
(サラサラ)
>インターネットを開いたときも同じようにしたいのです。
>IEなどもどうしたらいいのでしょうか?
IEの場合、2回クリックしたとしても、エラーとして扱う必要もないような気がします。
>ファイルを開いたときに存在しない場合 この場合とパラレルに考えるなら、 URLが存在しないか、 存在はするがLANが繋がっていなくてエラーになったとか、 読込に失敗したとか 云うことになりますか?
しかし、これらを厳密に把握しようとすると結構面倒なことになりそうです。
現実問題として、どんなエラーを想定しているのでしょうか?
最近この記事を目にして、その面倒さにうんざりしている所なんですが・・・・ ↓ 【ブラウザのビジー状態を判定するための,より良い方法】 http://d.hatena.ne.jp/language_and_engineering/20100410/p1
(半平太) 2011/09/19 23:09
>ファイルを開いたときに存在しない場合 この場合とパラレルに考えるなら、 URLが存在しないか、 存在はするがLANが繋がっていなくてエラーになったとか、 読込に失敗したとか 云うことになりますか?
>そうしたいのです。
(サラサラ)
>そうしたいのです。
そうですか。私は自信がありません。
キッチリ処理している実務経験者の回答をお待ちください。
(半平太) 2011/09/20 08:45
>どなたかお願いいたします。 (サラサラ)
引き続き自信はないですが、調べてみると「NavigateError」と云うイベントがありました。 それを利用すれば、判断できるかも知れません。
取りあえず、以下でお試しください。 ※読み込みに20秒以上掛った場合は、実際にエラーかどうか関係なく、時間オーバーエラーとして扱います。
下準備 VBEメニュー→[ツール]→[参照設定]から「Microsoft Internet Controls」にチェックを入れてください VBEメニュー→[挿入]→[クラスモジュール]でクラスモジュールを一枚追加してください ※クラス名はデフォルトのClass1のままにしてください。
1.実行ボタンがあるモジュールに以下のコードをコピペ
Private Sub CommandButton1_Click()
Dim cls1 As Class1 Dim IE As InternetExplorer Dim URL As String Dim Result As String
URL = "http://www.greens.co.jp/yoax.aspx" Set IE = CreateObject("InternetExplorer.Application") Set cls1 = New Class1
IE.Visible = True Result = cls1.judge(IE, URL)
If Result <> "読込完了" Then IE.Visible = False MsgBox Result IE.Visible = True End If
Set IE = Nothing End Sub
2.クラスモジュールに下記コードをコピペ
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private WithEvents clsIE As InternetExplorer Private document_completed_flag As String
Public Function judge(ByRef IE As InternetExplorer, ByVal URL As String) As String
Dim TT As Date Set clsIE = IE
With clsIE document_completed_flag = "TimeOut" .Navigate (URL)
TT = Now Do While document_completed_flag = "TimeOut" If Now > TT + TimeValue("0:00:20") Then '20秒以内で判定 Exit Do Else Sleep 10 DoEvents End If Loop
End With
judge = document_completed_flag End Function
Private Sub clsIE_DocumentComplete(ByVal pDisp As Object, URL As Variant) If pDisp Is clsIE Then document_completed_flag = "読込完了" Else document_completed_flag = "読込エラー" End If End Sub
Private Sub clsIE_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean) document_completed_flag = "読込エラー" End Sub
(半平太) 2011/09/20 17:57
↑ 読込完了時は、メッセージを出さない様に修正しました。 (半平太) 2011/09/20 19:40
質問本題とは関係ありませんが、 > は一般には次の二通りで使われます。
1)他の人の(あるいは過去の自分もふくめての)発言の引用 >前の発言で誰かが >いったこと
2)特定の人への発言 新規でも特定の人へのコメント > 〇〇さん
のような形です。1) はメールでよく見ますよね。 新規の自分自身の発言に > というのが違和感ありましたので、余計なお世話ですが。 (Mook)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.