【问题标题】:VBA issues with sending SMS发送短信的 VBA 问题
【发布时间】:2020-05-04 10:00:16
【问题描述】:

我的 Excel 应用程序有一个代码。它会生成一张产品发票,每次生成发票时,它都会发送当前的账单金额以及感谢信息。我购买了一个批量 SMS 帐户,他们为我提供了 API。

我正在使用“ActiveWorkbook.FollowHyperlink”方法发送短信,但它发送了 2 次短信。谁能告诉我为什么这种方法会发送 2 次短信??

我编写了以下程序:

Sub Macro1()

Dim murl As String

murl = "<< SMS API HERE >>"

ActiveWorkbook.FollowHyperlink Address:=murl

End Sub

【问题讨论】:

  • 你是怎么打电话给Macro1()的?您是否尝试过使用 F8 单步执行以查看它是否实际上被击中了两次,您是否尝试过以另一种方式调用相同的 API 方法以确保重复不在站点端?
  • 是的,我什么都试过了。我也尝试过使用 F8 单步执行它实际上是单打。我注意到它会在浏览器加载时发送短信,并在浏览器成功加载后发送第二条短信。
  • 我建议使用 MSXML2.ServerHTTP60 对象向 URL 发送获取请求,而不是打开浏览器。我将发布一个示例作为答案。

标签: excel vba api sms


【解决方案1】:

考虑对您的 API 使用原始 GET 请求,这是一个使用后期绑定向 google 页面发送 GET 请求的示例 - MsgBox 行只是显示来自 google 的响应,您可以替换 google。 co.uk URL 与您自己的 API URL。

Public Sub Send_GET()
    Dim con As Object ' MSXML2.ServerXMLHTTP60
    Set con = CreateObject("MSXML2.ServerXMLHTTP") ' New MSXML2.ServerXMLHTTP60
    con.Open "GET", "https://www.google.co.uk", False
    con.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
    con.send
    MsgBox con.responsetext
End Sub

我使用了后期绑定,但如果您想探索正确的对象和属性,请在您的 VBA 项目中添加对“Microsoft XML v6.0”的引用,您可以摆脱 ObjectCreateObject部分 - 发送这样的请求非常有用。

如果答案有助于解决您的问题,请不要忘记将答案标记为正确。

【讨论】:

    猜你喜欢
    • 2018-08-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    相关资源
    最近更新 更多