Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vba excel sms for api_Vba_Api_Sms_Excel 2007 - Fatal编程技术网

vba excel sms for api

vba excel sms for api,vba,api,sms,excel-2007,Vba,Api,Sms,Excel 2007,我希望每次我注册预约时,客户都会收到短信通知。 您将发现附加的vba代码用于发送sms。 脚本似乎正在执行。 另一方面,不要按预期发送sms。 请有人帮我找出遗漏了什么 Sub send_SMS_RDV() Application.ScreenUpdating = False ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

我希望每次我注册预约时,客户都会收到短信通知。 您将发现附加的vba代码用于发送sms。 脚本似乎正在执行。 另一方面,不要按预期发送sms。 请有人帮我找出遗漏了什么

Sub send_SMS_RDV()


    Application.ScreenUpdating = False

        
        
        '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        '''''''''essai code xfactor'''''''''''''''''''''
            Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
          Dim Recipient As String
           Dim Message As String
           
    Dim rowname As String
    Dim rowprestardv As String
    
    
    Dim rowtimerdv, rownumber, rowdaterdv, x  As String
    
    rowtimerdv = Worksheets("PLANNING").Range("I4").Value
    rowprestardv = Worksheets("PLANNING").Range("H4").Value
    rowname = Worksheets("PLANNING").Range("N4").Value
    rownumber = Worksheets("PLANNING").Range("O4").Value
    rowdaterdv = Worksheets("PLANNING").Range("Q4").Value
    
    
    x = "237"
    Recipient = "x&lastrownumber"
           

'
    If rowdaterdv = Worksheets("PLANNING").Range("P32").Value Then
'
        Message = "Dear  " & rowname & ",  your appointment has  been register at : " & rowtimerdv & " Contact us for any changes. Merci"
           Else
'
        Message = "Dear  " & rowname & ",  your appointment has  been register at : " & rowdaterdv & " Contact us for any changes. Merci"""

'
' 
        End If
           
           
            'Set vars where phone numbers and msg are set in your sheet'

            URL = api.smsfactor.com/send?text=" + Message + "&to=" + Recipient
            objHTTP.Open "GET", URL, False
            objHTTP.SetRequestHeader "Authorization", "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIzNDcwOSIsImlhdCI6MTYwMTk5NzM4N30.VbWdRwVwtIn5JtwNYjeJ8imnM_2bYskRIg2O6uZG5fA" 'Your Token'
            objHTTP.SetRequestHeader "Accept", "application/json"
            objHTTP.send ("")
        
        
        
      End Sub

     
    

您的
URL
变量看起来有误。这需要一个字符串,但它不是一个正确的字符串。您缺少一个开始引号,并且您正在使用
+
进行连接,我希望在这里看到的是
&

尝试将其更改为:

URL = "api.smsfactor.com/send?text=" & Message & "&to=" & Recipient

谢谢你的贡献。 我解决了这个问题。 这里是我修改的,使它工作

 Recipient = 237 & rownumber
在url之后

url = Replace(url, " ", "%20")
但是,我想使用另一个提供程序进行配置,但再次出现问题

Sub send_SMS_Fact()

    Application.ScreenUpdating = False
'   Declaring varibles for sending sms

    Dim objWinHTTP  As Object
    Dim response, send As String
    Dim sURL As String
    Dim API As String
    Dim SenderID As String
    Dim Recipient, Message As String
'   Declaring varibles for Application
    Dim rowname As String
    Dim rowtypevente As String
    
    
    Dim rowamount, rownumber, x  As String
    Worksheets("FACTURATION").Activate
    
    rowtypevente = Worksheets("FACTURATION").Range("H11").Text
    rowamount = Worksheets("FACTURATION").Range("M11").Text
    rowname = Worksheets("FACTURATION").Range("S11").Text
    rownumber = Worksheets("FACTURATION").Range("T11").Text
    
    
    API = "Um9kcnlnMTIzOnNhbG9tZQ=="
    x = "237"
    Recipient = x & rownumber
    SenderID = "TechSoft-SMS"
'   Preparation sms

    If rowtypevente = "VENTE DIFF" Then
        
        Message = "Dear  " & rowname & ",  The amount of your invoice which is: " & rowamount & " remains to be paid as soon as possible"
            Else
            rowtypevente = "VENTE"


        Message = "Dear  " & rowname & ",  We thank you for your loyalty and hope to have satisfied you. Best regards and see you soon"
    
    End If
'  Checking for valid mobile number

    If rownumber <> "700000000" Then

        
 

    Else
        Recipient = CStr(rownumber)

 
    End If



''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''test protocole url'''''
    Set objWinHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")

    sURL = app.techsoft-web-agency.com/sms/api"
    sURL = Replace(sURL, " ", "%20")
    Request = "&apikey=" & API & URLEncode(Apikey) & "&number=" & Recipient & URLEncode(Number)
    Request = Request & "&message=" & Message & URLEncode(Message)
    Request = Request & "&expediteur=" & SenderID & URLEncode(Expediteur) & "&msg_id=" & MsgID

    objWinHTTP.Open "GET", URL & Request, False
    objWinHTTP.SetTimeouts 30000, 30000, 30000, 30000
    objWinHTTP.send
    If objWinHTTP.StatusText = "OK" Then
        strReturn = objWinHTTP.ResponseText
        Debug.Print strReturn
    End If

    Set objWinHTTP = Nothing
    send = strReturn



End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Function URLEncode(sRawURL) As String
    On Error GoTo Catch
    Dim iLoop As Integer
    Dim sRtn As String
    Dim sTmp As String
    Const sValidChars = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz:/.?=_-$()~&"
    If Len(sRawURL) > 0 Then
        For iLoop = 1 To Len(sRawURL)
            sTmp = Mid(sRawURL, iLoop, 1)
            If InStr(1, sValidChars, sTmp, vbBinaryCompare) = 0 Then
                sTmp = Hex(Asc(sTmp))
                If sTmp = "20" Then
                    sTmp = "+"
                ElseIf Len(sTmp) = 1 Then
                    sTmp = "%0" & sTmp
                Else
                    sTmp = "%" & sTmp
                End If
            End If
            sRtn = sRtn & sTmp
        Next iLoop
        URLEncode = sRtn
    End If
Finally:
        Exit Function
Catch:
        URLEncode = ""
        Resume Finally
End Function
Sub send\u SMS\u Fact()
Application.ScreenUpdating=False
'声明用于发送sms的变量
Dim objWinHTTP作为对象
Dim响应,以字符串形式发送
作为字符串的Dim sURL
Dim API作为字符串
将SenderID设置为字符串
Dim收件人,消息为字符串
'声明变量以供应用
将行名称设置为字符串
Dim RowTypeVent作为字符串
Dim rowamount、rownumber、x作为字符串
工作表(“制作”)。激活
rowtypevente=工作表(“制作”).范围(“H11”).文本
行数量=工作表(“制作”).范围(“M11”).文本
rowname=工作表(“制作”).范围(“S11”).文本
行数=工作表(“制作”).范围(“T11”).文本
API=“Um9kcnlnMTIzOnNhbG9tZQ=”
x=“237”
收件人=x行编号(&R)
SenderID=“TechSoft短信”
“准备短信
如果rowtypevent=“VENTE DIFF”,则
Message=“亲爱的”&rowname&”,您的发票金额为:“&rowmount&”,有待尽快支付
其他的
rowtypevent=“VENTE”
Message=“亲爱的”&rowname&”,我们感谢您的忠诚,希望能让您满意。致以最良好的问候,不久再见
如果结束
'正在检查有效的手机号码
如果行号为“70000000”,则
其他的
收件人=CStr(行编号)
如果结束
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
测试协议url
设置objWinHTTP=CreateObject(“WinHttp.WinHttpRequest.5.1”)
sURL=app.techsoft web agency.com/sms/api”
sURL=替换(sURL,“,“%20”)
Request=“&apikey=“&API&URLEncode(apikey)&”&number=“&Recipient&URLEncode(number)
请求=请求&“&message=“&message&URLEncode(消息)
Request=Request&“&expeditor=“&SenderID&URLEncode(expeditor)&”&msg_id=“&MsgID
objWinHTTP.Open“GET”,URL和请求,False
objWinHTTP.SetTimeouts 300003000030000300003000030000
objWinHTTP.send
如果objWinHTTP.StatusText=“确定”,则
strReturn=objWinHTTP.ResponseText
调试。打印strReturn
如果结束
设置objWinHTTP=Nothing
发送=返回
端接头
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
公共函数URLEncode(sRawURL)作为字符串
关于错误转到捕获
Dim iLop作为整数
Dim sRtn As字符串
Dim sTmp作为字符串
Const sValidChars=“1234567890abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz:/。?=-$()~&”
如果Len(sRawURL)>0,则
对于iLoop=1到Len(sRawURL)
sTmp=Mid(sRawURL,iLoop,1)
如果InStr(1,sValidChars,sTmp,vbBinaryCompare)=0,则
sTmp=十六进制(Asc(sTmp))
如果sTmp=“20”,则
sTmp=“+”
ElseIf Len(sTmp)=1,则
sTmp=“%0”&sTmp
其他的
sTmp=“%”和sTmp
如果结束
如果结束
sRtn=sRtn和sTmp
下一个iLoop
URLEncode=sRtn
如果结束
最后:
退出功能
捕获:
URLEncode=“”
最后恢复
端函数
这就是我根据在他们网站上找到的文档配置新url的方式。
但是在“objWinHTTP.Open“GET”,URL&Request,False”行中,我被告知URL使用了无法识别的协议

Use
Option Explicit
,以确保正确声明了所有变量。您是否刚刚在公共互联网上发布了您的私有API令牌?我想现在任何人都可以使用您的帐户发送短信了。