是否可以在VBA中托管Web服务器?

时间:2011-06-23 01:01:21

标签: vba winsock

我想托管一个Web服务器,并希望使用VBA来完成它。这可能吗?我只是这样做是为了证明某人是错的,并且真的想制作这个节目。

那么可以创建一个非常简单的Web服务器(只是监听获取请求)吗?非常感谢帮助。

编辑

我正在尝试这样的事情

Sub startServer()
    Set wunsock = CreateObject("OSWINSCK.Winsock")
    wunsock.LocalPort = 80
    wunsock.Listen
End Sub

Sub wunsock_ConnectionRequest(ByVal requestID As Long)
    If sockMain.State <> sckClosed Then
        sockMain.Close
    End If
    sockMain.Accept requestID
End Sub

Private Sub wunsock_DataArrival(ByVal bytesTotal As Long)
    Dim strData As String
    sockMain.GetData strData, vbString
    txtStatus.Text = txtStatus.Text & _
        strData & vbCrLf
End Sub

然而它不起作用?

5 个答案:

答案 0 :(得分:4)

http://www.ostrosoft.com/oswinsck.asp#inst

是一种winsock类型的库,可以在VBA中使用。尽管不是最有效的方法,但可以做你想做的事情。

我赞赏你的坚韧,希望它能帮到你。

答案 1 :(得分:2)

尽管这是一个相当老的问题,但我仍然想提一下,我是由Daniel A. White提出的,使用纯VBA宏和一些Winsock C调用构建了一个Excel托管的REST Web服务器。

我将其添加为答案而不是评论,因为它是作为模块化库构建的,因此您可以根据需要进行调整,而其他人可能恰恰需要这种库。它既可以提供工作表,基本文件,也可以使用IWebController创建自定义的钩子,以侦听特定的路由(OP在评论中提到):

http://github.com/michaelneu/webxcel

要使用它,您必须将类/模块导入工作簿,或者让构建脚本为您创建一个新的类/模块。有关如何从VBA中启动服务器的信息,请参见Main.bas

答案 2 :(得分:1)

我不确定我完全理解这个问题。通常,您不“托管Web服务器”,而是托管网站。

但是如果您可以使用VBA执行TCP套接字,那么您可以按照HTTP标准协议制作一个非常简单的Web服务器。

编辑:根据您的评论,是的,您可以创建一个简单的Web服务器,只要您可以打开TCP套接字。

答案 3 :(得分:1)

好吧,冒着违反问题精神的风险,你总是可以使用VB对库函数的支持,只需创建一个绑定到许多C语言Web服务器选项之一的库(例如http://www.acme.com/software/micro_httpd/ },http://www.gnu.org/software/libmicrohttpd/http://code.google.com/p/mongoose/)。您必须从选定的Web服务器中制作DLL,但这很容易完成,这在VBA中可以正常工作。

答案 4 :(得分:0)

你需要多少VBA? These videos演示了一个C#addin用于提供静态文件和REST请求使用Application.Run转发到VBA代码