如何从VBA代码运行经典ASP文件(位于服务器上)?

如何从VBA代码运行经典ASP文件(位于服务器上)?,vba,asp-classic,outlook,Vba,Asp Classic,Outlook,最近几天,我正在开发Outlook 2013功能,该功能可以读取电子邮件并保存电子邮件的所有数据。这是在Outlook的VBA代码中完成的,一切正常。然后将存储的VBA数据传输到服务器上的XML文件,该文件也可以工作 接下来我要做的是读取ASP文件(也位于服务器上)中传输的XML数据,并将数据插入MS SQL server,然后删除XML文件。 这一切都很好,因为我通过在web上手动调用asp文件对其进行了测试 虽然我似乎不知道如何从VBA代码中自动激活/启动ASP文件,而不是自己手动调用它。

最近几天,我正在开发Outlook 2013功能,该功能可以读取电子邮件并保存电子邮件的所有数据。这是在Outlook的VBA代码中完成的,一切正常。然后将存储的VBA数据传输到服务器上的XML文件,该文件也可以工作

接下来我要做的是读取ASP文件(也位于服务器上)中传输的XML数据,并将数据插入MS SQL server,然后删除XML文件。 这一切都很好,因为我通过在web上手动调用asp文件对其进行了测试

虽然我似乎不知道如何从VBA代码中自动激活/启动ASP文件,而不是自己手动调用它。 因此,在Outlook中单击宏时,它会获取数据,将其放入XML文件中,然后启动ASP文件

还有另一种方法,即在我的服务器上使用任务调度器,它每X分钟启动一次ASP文件(并查找XML文件)。不过,我还是尽量避免这种可能性,因为如果outlook用户在短时间内多次按下outlook宏,XML文件将覆盖每个otter(从而导致无法获取所有正确数据)

我没有添加我的代码,因为我认为这里并不真正需要它(因为我的代码正在工作),尽管如果需要代码,只需询问;)

更新 我发现了一段代码,可以在web上打开asp文件(从而启动它)。问题是,它打开了网页,而只应该运行它。因此,我应该添加一些内容,即页面也立即关闭(因此用户看不到它被打开),现在提示是否可以实现这一点

打开它的代码如下:

Private Declare Function ShellExecute _
  Lib "shell32.dll" Alias "ShellExecuteA" ( _
  ByVal hWnd As Long, _
  ByVal Operation As String, _
  ByVal Filename As String, _
  Optional ByVal Parameters As String, _
  Optional ByVal Directory As String, _
  Optional ByVal WindowStyle As Long = vbMinimizedFocus _
  ) As Long

Public Sub OpenUrl()

    Dim lSuccess As Long
    lSuccess = ShellExecute(0, "Open", "http://mywebsite.nl/MyCode.asp")
End Sub
也位于服务器上

您是否在服务器上自动化Outlook


看起来您需要开发一个web服务来将数据(从Outlook中提取)提交到服务器并运行服务器端基础结构

您只能通过以“网页”形式打开ASP脚本来运行它,当然,您应该使用POST或GET请求发送数据。请检查本手册。您不能仅使用
WinHttp
从VBA请求经典ASP页面吗?您始终可以将ASP文件转换为vbs文件。代码基本相同。使用createobject而不是server.createobject实例化对象有很大区别。