Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как передать массив параметров как аргумент в SOAP - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как передать массив параметров как аргумент в SOAP (Макросы/Sub)
Как передать массив параметров как аргумент в SOAP
dmitry_d1000 Дата: Вторник, 21.06.2016, 10:47 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте.

Проблема в передаче параметров функции через MSSOAP.SoapClient30

Сами параметры на XML выглядят так:
<ns1:request>
<ns1:Login> ???? </ns1:Login>
<ns1:Password> ???? </ns1:Password>
<ns1:ContractID> ??? </ns1:ContractID>
</ns1:request>

[vba]
Код
Private Type TRequest
    Login As String
    Password As String
    ContractID As Double
End Type

Private Declare PtrSafe Function VarPtrArray Lib "VBE7" Alias _
        "VarPtr" (ByRef Var() As Any) As LongPtr

Sub Test
Dim oHttp As Object
Dim oSOAPClient As Object
Dim dom_sel As MSXML2.IXMLDOMSelection
Dim ptrToVar As LongPtr
Dim aa As TRequest

Set oSOAPClient = CreateObject("MSSOAP.SoapClient30")
Call oSOAPClient.MSSoapInit(<имя сервиса wsdl>)
     
    aa.Login = "?????"
    aa.Password = "?????"
    aa.ContractID = 000000000000#
     
ptrToVar = VarPtr(aa)
    
Set dom_sel = oSOAPClient.<Имя метода>(ptrToVar)

end sub
[/vba]

Причем передача одного параметра проходит без ошибок. И примеры на VBA я находил только для 1 параметра. А передать много параметров не получается.
Уже пробывал передавать и массивом и ссылкой.

p.s. К сожалению не могу расскрыть имя сервиса по соображениям конфиденциальности.


Сообщение отредактировал dmitry_d1000 - Вторник, 21.06.2016, 18:11
 
Ответить
СообщениеЗдравствуйте.

Проблема в передаче параметров функции через MSSOAP.SoapClient30

Сами параметры на XML выглядят так:
<ns1:request>
<ns1:Login> ???? </ns1:Login>
<ns1:Password> ???? </ns1:Password>
<ns1:ContractID> ??? </ns1:ContractID>
</ns1:request>

[vba]
Код
Private Type TRequest
    Login As String
    Password As String
    ContractID As Double
End Type

Private Declare PtrSafe Function VarPtrArray Lib "VBE7" Alias _
        "VarPtr" (ByRef Var() As Any) As LongPtr

Sub Test
Dim oHttp As Object
Dim oSOAPClient As Object
Dim dom_sel As MSXML2.IXMLDOMSelection
Dim ptrToVar As LongPtr
Dim aa As TRequest

Set oSOAPClient = CreateObject("MSSOAP.SoapClient30")
Call oSOAPClient.MSSoapInit(<имя сервиса wsdl>)
     
    aa.Login = "?????"
    aa.Password = "?????"
    aa.ContractID = 000000000000#
     
ptrToVar = VarPtr(aa)
    
Set dom_sel = oSOAPClient.<Имя метода>(ptrToVar)

end sub
[/vba]

Причем передача одного параметра проходит без ошибок. И примеры на VBA я находил только для 1 параметра. А передать много параметров не получается.
Уже пробывал передавать и массивом и ссылкой.

p.s. К сожалению не могу расскрыть имя сервиса по соображениям конфиденциальности.

Автор - dmitry_d1000
Дата добавления - 21.06.2016 в 10:47
Karataev Дата: Вторник, 21.06.2016, 11:22 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
Здесь у Вас используется переменная "Request", но она не объявлена:
[vba]
Код
    Request.Login = "?????"
[/vba]
А объявлена переменная "aa". Значит нужно так:
[vba]
Код
    aa.Login = "?????"
[/vba]
 
Ответить
СообщениеЗдесь у Вас используется переменная "Request", но она не объявлена:
[vba]
Код
    Request.Login = "?????"
[/vba]
А объявлена переменная "aa". Значит нужно так:
[vba]
Код
    aa.Login = "?????"
[/vba]

Автор - Karataev
Дата добавления - 21.06.2016 в 11:22
dmitry_d1000 Дата: Вторник, 21.06.2016, 18:12 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 2
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Karataev, я исправил. Забыл скопировать.
Но это проблему не решает.
 
Ответить
СообщениеKarataev, я исправил. Забыл скопировать.
Но это проблему не решает.

Автор - dmitry_d1000
Дата добавления - 21.06.2016 в 18:12
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Как передать массив параметров как аргумент в SOAP (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!