[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラー処理』(サラサラ)
エクセルはこのようにファイルを開いたときに存在しない場合と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.