Как вызвать WCF-клиент из Excel 2003 VBA?
Как задан вопрос, как мне вызвать клиент WCF из Excel 2003 VBA?
Я видел, что есть место, где я могу позвонить в веб-службу, но я искал через Google, все результаты, которые я получаю, не могут вызвать клиента WCF из VBA.
Я хотел бы знать, какой метод использовать до того, как я что-нибудь сделаю с моим кодом, не хочу тратить время и обнаружить позже, что это невозможно сделать.
Ответы
Ответ 1
Возможно, вам стоит взглянуть на использование WCF-сервиса Moniker, который позволяет вам вызывать службу WCF из VBA без установки каких-либо элементов на клиентской машине Excel, отличной от .NET Framework.
Dim addr As String
addr = "service:mexAddress=""net.tcp://localhost:7891/Test/WcfService1/Service1/Mex"","
addr = addr + "address=""net.tcp://localhost:7891/Test/WcfService1/Service1/"","
addr = addr + "contract=""IService1"", contractNamespace=""http://tempuri.org/"","
addr = addr + "binding=""NetTcpBinding_IService1"",bindingNamespace=""http://tempuri.org/"""
Dim service1 As Object
Set service1 = GetObject(addr)
MsgBox service1.GetData(12)
Я выписал полный шаг за шагом пример.
/Damian
Ответ 2
Я долгое время пробовал вызывать сервис wcf на основе SOAP из excel vba без везения.
Вместо этого я изменил свой сервис на привязку REST (webHttpBinding). Таким образом, я мог бы загрузить данные stright в XML-карту, как это был любой другой XML файл. Работала хорошо для меня, но я только пытался импортировать некоторые данные.
Что касается SOAP; ответ в этом question упоминает набор инструментов веб-служб, который все, что я мог найти, предложил использовать.
Ответ 3
Я бы не использовал VSTO в этом случае. COM Interop, вероятно, лучший путь, если вы не хотите, чтобы в ваших сообщениях SOAP не было никакой безопасности.
- Записать клиента WCF с необходимой привязкой
- Открыть сборку для COM-взаимодействия
- Ссылка на открытую сборку в Excel VBA
Ответ 4
Я сделал это с ограниченным успехом, используя Office 2003 Web Services Toolkit, но не без боли.
Обратите внимание, что это не поддерживается Microsoft и имеет ряд ограничений, которые могут сделать его непригодным для использования в производстве. Например. он не поддерживает веб-службы, которые возвращают пустые коллекции: см. fooobar.com/info/422212/....
Если вы хотите пройти этот маршрут, несмотря на то, что он не поддерживается, загрузите инструментарий и разместите все проблемы, которые у вас здесь есть.
Microsoft рекомендует использовать VSTO, но это не легко интегрируется с VBA...