Skip to main content

Looking for EXCEL VBA example using Rest API PATCH command


I’m looking for a simple example for updating one or more fields of existing records thru excel vba. I’ve found several example of using GET, a few for POST & PUT, but almost nothing for using PATCH. I really only need to update one field of a record, but many records to update.

Thanks,

3 replies

ScottWorld
Forum|alt.badge.img+33
  • Brainy
  • 8796 replies
  • January 21, 2021

You can find PATCH examples that are already handcrafted & custom-tailored for your particular base by going to REST API - Airtable, and then choosing your base name, then choosing the table name (in the left margin), then choosing “Update Records” (in the left margin).


  • Author
  • Participating Frequently
  • 8 replies
  • January 22, 2021
ScottWorld wrote:

You can find PATCH examples that are already handcrafted & custom-tailored for your particular base by going to REST API - Airtable, and then choosing your base name, then choosing the table name (in the left margin), then choosing “Update Records” (in the left margin).


Hi Scott,

That’s what I’m referencing, but I’m struggling translating that into VBA for excel. I’m a novice developer at best, and I pull most of what I need from examples.

I’m trying to update a single field of a single record just to I can understand how it works to plug it into a tool I’m working on.

I get this error:
{"error":{"type":"INVALID_REQUEST_MISSING_FIELDS","message":"Could not find field \\"fields\\" in the request body"}}

I don’t know if my string is formatted incorrectly for what needs updated and/or if I don’t have the right parts of the request. I started with a working example for a GET request.

Sub REST_PATCH()

Dim objRequest As Object
Dim strUrl As String
Dim blnAsync As Boolean
Dim strResponse As String
Dim str As String


Set objRequest = CreateObject("MSXML2.XMLHTTP")
strUrl = "https://api.airtable.com/v0/appeIRMxD05xIau1C/VENDOR%20ITEMS/recjJhV29c8NiwY0t?api_key=keyxxxxxxxxxxxx"
blnAsync = True

str = "'{ ""records"": [ { ""id"": ""recjJhV29c8NiwY0t"", ""fields"": {""DESC"": ""TEST PATCH\n""] }'"

With objRequest
    .Open "PATCH", strUrl, blnAsync
    .SetRequestHeader "Content-Type", "application/json-patch"
    .Send str
    'spin wheels whilst waiting for response
    While objRequest.readyState <> 4
        DoEvents
    Wend
    strResponse = .ResponseText
End With

Debug.Print strResponse

End Sub

Thanks for the help,

Greg


ScottWorld
Forum|alt.badge.img+33
  • Brainy
  • 8796 replies
  • January 22, 2021
Greg_Witkamp wrote:

Hi Scott,

That’s what I’m referencing, but I’m struggling translating that into VBA for excel. I’m a novice developer at best, and I pull most of what I need from examples.

I’m trying to update a single field of a single record just to I can understand how it works to plug it into a tool I’m working on.

I get this error:
{"error":{"type":"INVALID_REQUEST_MISSING_FIELDS","message":"Could not find field \\"fields\\" in the request body"}}

I don’t know if my string is formatted incorrectly for what needs updated and/or if I don’t have the right parts of the request. I started with a working example for a GET request.

Sub REST_PATCH()

Dim objRequest As Object
Dim strUrl As String
Dim blnAsync As Boolean
Dim strResponse As String
Dim str As String


Set objRequest = CreateObject("MSXML2.XMLHTTP")
strUrl = "https://api.airtable.com/v0/appeIRMxD05xIau1C/VENDOR%20ITEMS/recjJhV29c8NiwY0t?api_key=keyxxxxxxxxxxxx"
blnAsync = True

str = "'{ ""records"": [ { ""id"": ""recjJhV29c8NiwY0t"", ""fields"": {""DESC"": ""TEST PATCH\n""] }'"

With objRequest
    .Open "PATCH", strUrl, blnAsync
    .SetRequestHeader "Content-Type", "application/json-patch"
    .Send str
    'spin wheels whilst waiting for response
    While objRequest.readyState <> 4
        DoEvents
    Wend
    strResponse = .ResponseText
End With

Debug.Print strResponse

End Sub

Thanks for the help,

Greg


Sorry, I don’t know VBA for Excel.


Reply