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


Answers

إذا كنت بحاجة إلى العمل على كل من Mac و Windows ، فيمكنك استخدام 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 لنظام التشغيل Mac 2008 ، الذي لا يحتوي على VBA. حصل Excel for Mac 2011 على VBA.

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

Question

ما هو كود VBA المطلوب لتنفيذ HTTP POST من جدول بيانات Excel؟




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

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

(من الإشارة إلى MSXML داخل مشاريع VBA )

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

باختصار ، إنه يعمل بشكل أساسي على النحو التالي:

  1. استدعاء طريقة open للاتصال بالخادم البعيد
  2. send المكالمات send الطلب.
  3. قراءة الاستجابة عبر responseStream أو responseBody أو responseBody أو responseBody