Excel VBA:从函数调用Sub Procedure

时间:2013-11-22 16:22:09

标签: excel vba excel-vba

我的代码在给定某个参数的情况下检索HTML页面作为对象:

Public Sub MyPage(myparam)
Dim oHtml As HTMLDocument

Set oHtml = New HTMLDocument

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
    .Open "GET", "http://www.example.com" & myparam, False
    .send
    oHtml.body.innerHTML = .responseText
End With

End Sub

我定义了将使用相同对象的函数,因此,我希望最小化连接数。所以我想定义一个函数,如:

Function myFunction(myparam As String)

Call MyPage(myparam)

'code here

End Function

但这不起作用。当我将= myFunction键入单元格时,我得到#VALUE!错误。

如果我只是在函数内部输入子过程的代码,它就可以起作用,如:

Function myFunction(myparam As String)

Dim oHtml As HTMLDocument

Set oHtml = New HTMLDocument

With CreateObject("WINHTTP.WinHTTPRequest.5.1")
    .Open "GET", "http://www.example.com" & myparam, False
    .send
    oHtml.body.innerHTML = .responseText
End With

    'code here

End Function

但是,如上所述,这将需要相同的连接和对象用于不同的功能。

我该如何解决这个问题?感谢

1 个答案:

答案 0 :(得分:1)

将我的评论转换为答案:

oHtml variable用作Public variable