Thank you for reaching out.
It looks like you’re running into a common challenge when updating SharePoint multi-choice fields through VBA and ADO. The issue happens because these fields are stored in a special internal format in SharePoint. The “;#” format that you see when reading data works for displaying it, but it doesn’t work the same way when writing back.
Here are a few approaches you can try:
Use a Recordset to update instead of a SQL command
Rather than using a direct SQL UPDATE statement, it’s more reliable to open the list as a recordset and update the values through it. This method handles the SharePoint data format automatically and avoids formatting errors that often occur with direct SQL updates.
Adjust your connection settings
When performing updates, make sure your connection string allows editing. You can do this by setting it to use an update-friendly mode — for example, changing your IMEX and RetrieveIds options. This helps ADO recognize your list items correctly.
Check your field type and name
Ensure that the field you’re updating is a “Choice” field that allows multiple selections, not a Lookup field. Also, double-check the internal name of the field in SharePoint, as that’s what ADO uses for updates.
If recordset updates still don’t work
You can consider using SharePoint’s REST API or Microsoft Graph API from VBA. These allow you to send update requests directly to SharePoint and fully support multi-choice fields. It’s a bit more advanced, but it gives reliable results once set up.
Tip: Start with the recordset approach it’s the most straightforward and works for most SharePoint setups.
If you continue to face issues after trying this, please share what error or behavior you see, and we can guide you step by step.
Let me know if you need any further help with this. We'll be happy to assist.
If you find this helpful, please mark this as answered.