Private Sub Workbook_Open()
on error goto Oops
version = "1.0"
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "<WEB SERVICE>"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("version=" + version)
exit sub
Oops:
'handle error here
End Sub
あなたは、例えば、エラーのためにURLを変更したい場合、あなたは、また、この
Private Sub Workbook_Open()
on error goto Oops
version = "1.0"
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "<WEB SERVICE>"
Send:
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("version=" + version)
exit sub
Oops:
'handle error here
URL="new URL"
resume Send 'risk of endless loop if the new URL is also bad
End Sub
を行うことができ、あなたの気持ちが本当にキャッチー/しようとした場合、あなたはこのようにそれをエミュレートすることができます。
Private Sub Workbook_Open()
version = "1.0"
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "<WEB SERVICE>"
on error resume next 'be very careful with this, it ignores all errors
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("version=" + version)
if err <> 0 then
'not 0 means it errored, handle it here
err.clear 'keep in mind this doesn't reset the error handler, any code after this will still ignore errors
end if
End Sub
もそう
Private Sub Workbook_Open()
version = "1.0"
on error resume next
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
if err <> 0 then
'unable to create object, give up
err.clear
exit sub
end if
URL = "<WEB SERVICE>"
objHTTP.Open "POST", URL, False
if err <> 0 then
'unable to open request, give up
err.clear
exit sub
end if
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("version=" + version)
if err <> 0 then
'unable to send request, give up
err.clear
exit sub
end if
End Sub
あなたはこの
をしましたので、もし、
on error goto
スタイルで発生したエラーを処理されないことは注目に値する...これは本当にハードコアであることを拡張します
private sub MakeError()
dim iTemp as integer
on error goto Oops
iTemp = 5/0 'divide by 0 error
exit sub
Oops:
itemp = 4/0 'unhandled exception, divide by 0 error
end sub
未処理の例外が発生することがありますが、
private sub MakeError()
dim iTemp as integer
on error resume next
iTemp = 5/0 'divide by 0 error
if err <> 0 then
err.clear
iTemp = 4/0 'divide by 0 error, but still ignored
if err <> 0 then
'another error
end if
end if
end sub
VBAがすべて無視するため、例外は発生しません。
これはすべて[エラー処理](https://stackoverflow.com/documentation/vba/3211/error-handling#t=201706192005424139825)のドキュメントのトピックで説明しています。 –
私は以下の回答を掲載しました。しかし、また、サイドノートとして。あなたのコードは、グローバル変数を使用しないでください。あるいは変数を宣言するのを忘れてしまった。 VBAを使用すると、使用変数を曖昧にすることはできますが、それを行うとメンテナンスが難しくなります。 コードの先頭にバージョン の直後に追加する 'dim URL as string' ' dim objHTTP as object' –