|
本帖最后由 905738810 于 2022-10-30 16:02 编辑
前两天看到有人发了一篇求助帖,VBA可以实现在手机上录入吗?,我开新帖来说一下。
首先我使用的了vbRichClient5.dll这个库,这个库是针对VB6开发的在VBA也可以使用一些功能,比如构建一个Web服务。
这个库只有32位版本,所以你的Excel必须是32位,如果是64位Excel可以用VB6包装一下,论坛上有很多包装例子这里就不细说了。
vbRichClient5.dll库文件我直接发出来省去不知道的贴有去找了
vbRichClient5.part1.rar
(1 MB, 下载次数: 32)
vbRichClient5.part2.rar
(1 MB, 下载次数: 31)
vbRichClient5.part3.rar
(291.58 KB, 下载次数: 34)
下载解压后,需要运行里面的`RegisterRC5inPlace.vbs`进行注册,之后就可以在vba中引用他了。
在vbRichClient5中有一个vbRichClient5.cWebServer类,这个类可以是让我们简单快速的搭建一个Web服务。
之所以选择vbRichClient5.cWebServer就是因为这个非常简单,可以不需要成本学习就能快速搭建出Web服务。
- '声明一个cWebServer
- Private WithEvents k As vbRichClient5.cWebServer
- Private Sub test()
- '实例化
- Set k = New vbRichClient5.cWebServer
- '开启监听,ip地址"127.0.0.1" 端口号80
- k.Listen ThisWorkbook.Path, "127.0.0.1", 80
- End Sub
- Private Sub k_ConnAccepted(hSocket As Long, ClientIPAndPort As String)
- '客户端连接时触发
- End Sub
- Private Sub k_ConnRemoved(hSocket As Long, ClientIPAndPort As String, ByVal DueToError As Boolean)
- '客户端断开连接时触发
- End Sub
- Private Sub k_ProcessRequest(Request As vbRichClient5.cWebRequest)
- '客户端发送请求时触发----最重要的
- Request.Response.SetResponseDataString "Hello, Word"
- End Sub
复制代码
这就是cWebServer的所有方法,非常的简单,将这个代码粘贴到Sheet1中,运行test,之后在浏览器输入127.0.0.1就会看到"Hello, Word"
这样一个Web服务就算搭建出来了。
简单地框架搭建出来后下面就开始细化,其他地方完全不需要变动,细化内容全部都在`ProcessRequest`事件当中。
`ProcessRequest`事件用来接受客户端发送过来的请求。所有的请求都会在这个事件当中。发送过来的内容全部在参数`Request`对象中
常用的有以下内容:
- Request.Headers 请求头信息
- Request.URL URL地址(不含ip),如:地址127.0.0.1/abc Request.URL="abc"
- Request.Method 请求方式(枚举类型):HTTP_DELETE,HTTP_GET,HTTP_POST,HTTP_PUT
- Request.GetData 客户端post请求传过来的数据
我们可以根据不同的URL和Method来动态的返回给客户端
例如:
这做在浏览器输入127.0.0.1/excel 时会看到"读取Excel"
接受客户端内容后还需要给客户端返回内容,否则客户端会一直等待响应。
Request.Response对象用来给客户端返回内容,
常用的有以下内容:
- Request.Response.SetResponseDataBytes 给客户端发送字节数组
- Request.Response.SetResponseFileNameAbs 给客户端发送文件
- Request.Response.SetResponseDataString 给客户端发送字符串(可以是html文本)
- Request.Response.ContentType 发送内容的类型
以上内容就是所有cWebServer类的功能。演示附件:
ExcelWeb.zip
(25.36 KB, 下载次数: 37)
|
评分
-
9
查看全部评分
-
|