2017-10-24 12 views
1

用URLチェッカーを次のコードは、ここではジャスティン・デアリングによって投稿されました: url checker VBA, when redirected, show redirected urlは、VBAでの多変数関数の呼び出し - リダイレクト

をしかし、地球上で私はT/Fとターゲットを返すために、この関数を呼び出すことができますか?私はさまざまな方法(コール、ストレートリクエストなど)を試して、コンパイルエラー、オブジェクトの無効な使用を取得し続けます。

私はダウン機能をカットする場合は、次のブール

ようパブリック関数のgetResult(文字列strUrl)しかし、これは、ターゲットを返さない301又は302のためにT/Fを返します。

isRedirectをTrue/Falseにする正しい方法はありますかおよびターゲットもリダイレクトされていますか?私は何が欠けていますか?

B

Public Function GetResult(ByVal strUrl As String, Optional ByRef isRedirect As Boolean, Optional ByRef target As String) As String 
Dim oHttp As New WinHttp.WinHttpRequest 

oHttp.Option(WinHttpRequestOption_EnableRedirects) = False 
oHttp.Open "HEAD", strUrl, False 
oHttp.send 
GetResult = oHttp.Status & " " & oHttp.statusText 
If oHttp.Status = 301 Or oHttp.Status = 302 Then 
    isRedirect = True 
    target = oHttp.getResponseHeader("Location") 
Else 
    isRedirect = False 
    target = Nothing 
End If 
End Function 
+0

関数を修正して関数を修正し、関数内で2つのアイテムを保持するように配列をdimし、関数の終わりの前にisRedirectとtargetで配列を作成しますか? – QHarr

答えて

0

これを試してみてください。

Option explicit 

Public Function GetResult(ByVal strUrl As String, Optional ByRef isRedirect As Boolean, Optional ByRef target As String) As String 
Dim oHttp As WinHttp.WinHttpRequest 
Set oHttp = new winhttp.winhttprequest 

With ohttp 
.Option(WinHttpRequestOption_EnableRedirects) = False 
.Open "HEAD", strUrl, False 
.send 

GetResult = .Status & " " & .statusText 

If .Status = 301 Or .Status = 302 Then 
isRedirect = True 
target = .getResponseHeader("Location") 
Else 
isRedirect = False 
target = vbnullstring 
End If 

End with 

End Function 

携帯で書かれていて、書式が正しくないと申し訳ありません。

私は使用しないことに注意してください。Dim ... As newシンタックス代わりに、dimに設定します。

希望します。あなたがどのように乗っているか教えてください。

私の理解は、関数が複数の値を返すようにすることです。渡すパラメータByRefは、これを達成するための1つの回避策です。代わりに、単一の区切り文字列を返すこともできます。次に、選択した区切り文字にsplit()を実行します。またはバリアントを返す。

関連する問題