كيف يمكنني إرسال طلب POST HTTP إلى الملقم من Excel باستخدام VBA?

StackOverflow https://stackoverflow.com/questions/158633

سؤال

ما VBA البرمجية المطلوبة لأداء HTTP المنصب من جدول بيانات Excel?

هل كانت مفيدة؟

المحلول

Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send("")

وبدلا من ذلك، للسيطرة أكبر على طلب HTTP يمكنك استخدام <لأ href = "https://msdn.microsoft.com/en-us/library/windows/desktop/aa384106٪28v=vs.85٪29. ASPX "يختلط =" noreferrer "> WinHttp.WinHttpRequest.5.1 بدلا من <لأ href =" https://msdn.microsoft.com/en-us/library/ms762278٪28v=vs.85٪29.aspx "يختلط = "noreferrer"> MSXML2.ServerXMLHTTP .

نصائح أخرى

إذا كنت بحاجة إلى العمل على كل من ويندوز وماك ، يمكنك استخدام QueryTables:

With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2"))
    .PostText = "origin_airport=MSN&destination_airport=ORD"
    .RefreshStyle = xlOverwriteCells
    .SaveData = True
    .Refresh
End With

ملاحظات:

  • بخصوص الإخراج...أنا لا أعرف إذا كان من الممكن العودة النتائج إلى نفس الخلية التي تسمى VBA وظيفة.في المثال أعلاه ، والنتيجة هي مكتوبة في A2.
  • بشأن إدخال...إذا كنت تريد نتائج تحديث عند تغيير خلايا معينة ، تأكد من تلك الخلايا هي حجة VBA وظيفة.
  • هذا لن يعمل على Excel for Mac 2008 والتي لا يجب VBA.Excel لنظام التشغيل Mac 2011 حصلت VBA مرة أخرى.

لمزيد من التفاصيل يمكنك مشاهدة ملخص كامل عن "باستخدام خدمات الويب من Excel."

وبالإضافة إلى anwser من <لأ href = "https://stackoverflow.com/questions/158633/how-can-i-send-an-http-post-request-to-a-server-from- اكسل باستخدام VBA-# 158657 "> بيل السحلية :

ومعظم الخلفيات تحليل البيانات الخام آخر. في PHP على سبيل المثال، سيكون لديك مجموعة $ _POST الذي سيتم تخزين المتغيرات الفردية ضمن بيانات آخر. في هذه الحالة لديك لاستخدام رأس إضافية "نوع المحتوى: التطبيق / x-شبكة الاتصالات العالمية urlencoded شكل":

Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded"
objHTTP.send ("var1=value1&var2=value2&var3=value3")

وإلا لديك لقراءة البيانات الخام آخر على المتغير "$ HTTP_RAW_POST_DATA".

يمكنك استخدام ServerXMLHTTP في مشروع VBA بإضافة إشارة إلى MSXML.

  1. فتح محرر VBA (عادة عن طريق تحرير ماكرو)
  2. انتقل إلى قائمة "المراجع المتاحة"
  3. تحقق من Microsoft XML
  4. انقر فوق "موافق".

(من الرجوع MSXML ضمن مشاريع VBA)

على ServerXMLHTTP وثائق MSDN لديها تفاصيل كاملة عن جميع خصائص وأساليب ServerXMLHTTP.

باختصار على الرغم من أنه يعمل في الأساس مثل هذا:

  1. الاتصال فتح طريقة للاتصال الملقم البعيد
  2. الاتصال إرسال لإرسال الطلب.
  3. قراءة الاستجابة عبر responseXML, responseText, responseStream أو responseBody

وفعلت ذلك قبل استخدام المكتبة MSXML ثم استخدام الكائن مدعوم. انظر http://scriptorium.serve-it.nl/view.php؟sid = 40

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top