Как мне вызвать клиент WCF из Excel 2003 VBA? - PullRequest
12 голосов
/ 18 июня 2009

Когда вопрос задан, как мне вызвать клиента WCF из Excel 2003 VBA?

Я видел, что есть место, где я могу позвонить в веб-службу, но я искал через Google, все полученные результаты не позволяют вызвать клиента WCF из VBA.

Я хотел бы знать, какой метод использовать, прежде чем что-то делать со своим кодом, не хочу тратить время и позже узнаю, что это невозможно сделать.

Ответы [ 4 ]

12 голосов
/ 06 июля 2009

Возможно, вы захотите взглянуть на использование моникера службы WCF, который позволяет вам вызывать службу 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 голосов
/ 23 июня 2009

Я бы не использовал VSTO в этом случае. COM Interop - это, пожалуй, лучший способ, если вы не хотите обеспечивать безопасность в своих сообщениях SOAP.

  1. Написать клиент WCF, с необходимой привязкой
  2. Открытая сборка для COM Interop
  3. Ссылка на открытую сборку в Excel VBA
2 голосов
/ 18 июня 2009

Я довольно долго пытался вызвать wcf-сервис на основе SOAP из excel vba, но безуспешно.

Вместо этого я изменил свой сервис на привязку REST (webHttpBinding). Таким образом, я мог загружать данные прямо в карту XML, как и в любой другой файл XML. У меня хорошо получалось, но я только пытался импортировать некоторые данные.

Что касается SOAP; В ответе на этот вопрос упоминается инструментарий веб-сервисов, все примеры, которые я смог найти, предложили использовать.

1 голос
/ 18 июня 2009

Я сделал это с ограниченным успехом, используя Office 2003 Web Services Toolkit , но не безболезненно.

Обратите внимание, что это не поддерживается Microsoft и имеет ряд ограничений, которые могут сделать его непригодным для производственного использования. Например. он не поддерживает веб-службы, которые возвращают пустые коллекции: см. этот вопрос StackOverflow .

Если вы хотите пойти по этому пути, несмотря на то, что он не поддерживается, загрузите инструментарий и опубликуйте любые проблемы, которые у вас возникли.

Microsoft рекомендует использовать VSTO, но это нелегко интегрировать с VBA ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...