Visual Basic for Applications:
ส่งคำขอ HTTP

วิธีการ:

คีย์ในการส่งคำขอ HTTP ใน VBA คือการใช้งานไลบรารี Microsoft XML, v6.0 (หรือเวอร์ชันเก่ากว่า ขึ้นอยู่กับระบบของคุณ) ก่อนอื่น ตรวจสอบให้แน่ใจว่าการอ้างอิงนี้เปิดใช้งานในโปรเจ็กต์ของคุณโดยไปที่ Tools > References ในตัวแก้ไข VBA และตรวจสอบ Microsoft XML, v6.0

นี่คือวิธีการส่งคำขอ HTTP GET อย่างง่าย:

Dim httpRequest As Object
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")

With httpRequest
    .Open "GET", "https://api.example.com/data", False
    .send
    If .Status = 200 Then
        Debug.Print .responseText
    Else
        Debug.Print "Error: " & .Status & " - " & .statusText
    End If
End With

สำหรับคำขอ POST ที่เราต้องส่งข้อมูล (เช่น JSON) ไปยังเซิร์ฟเวอร์:

Dim httpRequest As Object, postData As String
Set httpRequest = CreateObject("MSXML2.XMLHTTP.6.0")
postData = "{""key"":""value""}"

With httpRequest
    .Open "POST", "https://api.example.com/submit", False
    .setRequestHeader "Content-Type", "application/json"
    .send postData
    If .Status = 200 Then
        Debug.Print .responseText
    Else
        Debug.Print "Error: " & .Status & " - " & .statusText
    End If
End With

ตัวอย่างผลลัพธ์สำหรับคำขอที่สำเร็จอาจเป็นสตริง JSON หรือหน้า HTML ขึ้นอยู่กับ API หรือเว็บเพจที่คุณโต้ตอบ:

{"data": "นี่คือการตอบสนองจากเซิร์ฟเวอร์"}

การศึกษาเพิ่มเติม

วิธีการที่แสดงนำเสนอใช้งาน MSXML2.XMLHTTP อ็อบเจ็กต์, ซึ่งเป็นส่วนหนึ่งของ Microsoft XML Core Services (MSXML) ได้รับการเป introduce เพื่อเสนอวิธีทำงานด้าน XML ให้กับนักพัฒนา VBA และเมื่อเวลาผ่านไปกลายเป็นเครื่องมือทั่วไปสำหรับคำขอ HTTP แม้ว่าจะไม่ได้ทำงานโดยตรงกับข้อมูล XML แม้ว่าจะเก่าแต่ยังเป็นตัวเลือกที่เชื่อถือได้สำหรับการโต้ตอบเว็บอย่างง่ายใน VBA

อย่างไรก็ตาม, VBA และกลไกคำขอ http ของมันขาดความเข้มแข็งและความยืดหยุ่นที่พบในสภาพแวดล้อมการโปรแกรมแบบสมัยใหม่ ตัวอย่างเช่น, การจัดการคำขอแบบอะซิงโครนัสหรือการทำงานภายในแอปพลิเคชันที่ต้องการคุณลักษณะ HTTP ขั้นสูง (เช่นเว็บซอกเก็ตหรือเหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์) อยู่นอกขอบเขตของ VBA เมื่อทำงานในโครงการรวมเว็บที่ซับซ้อนมากขึ้น นักพัฒนามักใช้ไลบรารีหรือเครื่องมือภายนอก หรือแม้แต่การทำให้เบราว์เซอร์ทำงานอัตโนมัติผ่านเทคนิคเว็บสแครปปิ้ง แม้ว่าเหล่านี้จะเป็นวิธีแก้ปัญหาแทนที่จะเป็นโซลูชัน

ภาษาและสภาพแวดล้อมเช่น Python กับไลบรารี requests ของมันหรือ JavaScript ที่ทำงานบน Node.js เสนอความสามารถในการส่งคำขอ HTTP ที่ทรงพลังและหลากหลายเลยทันที รวมถึงการดำเนินการแบบอะซิงโครนัส, การจัดการ JSON ที่ง่ายขึ้น, และการสนับสนุนสำหรับเทคโนโลยีเว็บต่างๆอย่างกว้างขวาง นักพัฒนาที่มีความลึกในระบบนิเวศของ Microsoft อาจพิจารณาการเปลี่ยนไปใช้ PowerShell หรือ C# สำหรับงานที่ต้องการการโต้ตอบเว็บที่ซับซ้อนมากขึ้น โดยใช้ประโยชน์จากคุณสมบัติการเขียนโปรแกรมเครือข่ายที่กว้างขวางของ .NET

ดังนั้น ในขณะที่ความสามารถของ VBA ในการส่งคำขอ HTTP เพียงพอสำหรับการสืบค้นและงานดึงข้อมูลอย่างง่าย การสำรวจทางเลือกอื่นๆ จึงกลายเป็นสิ่งสำคัญเมื่อความต้องการโครงการของคุณพัฒนาไปสู่ภูมิทัศน์เว็บที่ซับซ้อนและสมัยใหม่