2009-06-18 5 views
12

जैसा सवाल पूछा गया है, मैं एक्सेल 2003 वीबीए से डब्ल्यूसीएफ क्लाइंट को कैसे कॉल करूं?मैं एक्सेल 2003 वीबीए से डब्ल्यूसीएफ क्लाइंट को कैसे कॉल करूं?

मैंने देखा कि एक ऐसी जगह है जहां मैं वेब सेवा कह सकता हूं, लेकिन मैंने Google के माध्यम से खोज की है, मुझे प्राप्त होने वाले सभी परिणाम वीबीए से डब्लूसीएफ क्लाइंट को कॉल करना संभव नहीं है।

मैं जानना चाहता हूं कि मेरे कोड के साथ कुछ भी करने से पहले मुझे किस विधि का उपयोग करना है, समय बर्बाद नहीं करना चाहते हैं और बाद में पता लगाना कि ऐसा करना संभव नहीं है।

+1

कोड वेब सेवा को कॉल करने के लिए कैसा दिखता है? यह बहुत अलग नहीं होना चाहिए, लेकिन मुझे निश्चित रूप से पता नहीं है। –

+1

यदि Google आपको नहीं बताता कि एक्सेल से वेब सेवा कैसे कॉल करें, तो शायद एक्सेल दस्तावेज़ या ऑनलाइन संसाधन होंगे? –

+1

डब्ल्यूसीएफ क्लाइंट का उपयोग करने का कारण क्या है? रिमोट सेवा कैसा दिखता है? क्या यह सुरक्षा, लेनदेन, कतार में उपयोग करता है? लक्षित सेवा के आधार पर, वीबीए से एमएसएक्सएमएल का उपयोग करना आसान हो सकता है। – Cheeso

उत्तर

2

मैंने बिना किसी किस्मत के एक्सेल वीबीए से एसओएपी आधारित डब्ल्यूसीएफ सेवा को कॉल करने के लिए थोड़ी देर की कोशिश की।

इसके बजाय मैंने अपनी सेवा को आरईएसटी बाइंडिंग (webHttp बाइंडिंग) में बदल दिया। इस तरह से मैं एक एक्सएमएल मानचित्र में डेटा स्ट्रेट लोड कर सकता था जैसे कि यह कोई अन्य एक्सएमएल फ़ाइल थी। मेरे लिए अच्छा काम किया, लेकिन मैं केवल कुछ डेटा आयात करने की कोशिश कर रहा था।

एसओएपी के लिए; इस question में एक उत्तर वेब सर्विसेज टूलकिट का उल्लेख करता है जो मुझे उपयोग करने के लिए सुझाए गए सभी उदाहरणों का उल्लेख करता है।

1

मैंने Office 2003 Web Services Toolkit का उपयोग करके सीमित सफलता के साथ ऐसा किया है, लेकिन कुछ दर्द के बिना नहीं।

ध्यान दें कि यह माइक्रोसॉफ्ट द्वारा समर्थित नहीं है, और इसमें कई प्रतिबंध हैं जो इसे उत्पादन के उपयोग के लिए अनुपयुक्त बना सकते हैं। जैसे यह उन वेब सेवाओं का समर्थन नहीं करता है जो खाली संग्रह लौटाते हैं: this StackOverflow question देखें।

यदि आप असमर्थित होने के बावजूद इस मार्ग पर जाना चाहते हैं, तो टूलकिट डाउनलोड करें और यहां दी गई किसी भी समस्या को पोस्ट करें।

माइक्रोसॉफ्ट VSTO उपयोग करने की सलाह है, लेकिन इस VBA के साथ आसानी से एकीकृत नहीं करता है ...

2

मैं इस मामले में VSTO का उपयोग नहीं होता। COM इंटरऑप शायद जाने का सबसे अच्छा तरीका है, जब तक आप अपने एसओएपी संदेशों में कोई सुरक्षा नहीं चाहते हैं।

  1. लिखें WCF ग्राहक, आवश्यक बाध्यकारी
  2. एक्सेल VBA में COM इंटरॉप
  3. संदर्भ उजागर विधानसभा के लिए विधानसभा का पर्दाफाश साथ
12

आप WCF सेवा Moniker की सुविधा देता है जो आप उपयोग कर को देखने के लिए चाहते हो सकता है .NET Framework के अलावा Excel क्लाइंट मशीन पर कुछ भी इंस्टॉल किए बिना VBA से WCF सेवा का आह्वान करें।

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) 

मैंने complete step-by-step example लिखा है।

/डेमियन

+0

डेमियन, क्या आप अपने wcf servcie विधि में प्राथमिकताओं की एक सरणी पारित करने में सक्षम हैं? – priehl

+0

मुझे याद नहीं है, लेकिन मैं एक संस्करण सरणी पारित कर रहा था - शायद वहां पर आदिम मूल्य डाल दें: नई वस्तु वापस करें [] {123, 456, 78 9}; – Damian

संबंधित मुद्दे