Avatar of Bryce Bassett
Bryce Bassett
Flag for United States of America

asked on 

Using VBA to remove BOM from UTF-8 CSV file, so special characters can be read into Word using ADODB

I've written a pretty complex Word global template (.dotm) using VBA.  One function auto-creates a Word document based on a CSV file output from another system.  The developers of that system are saving the CSV using "UTF-8 with BOM" encoding. I use this  ADODB method to open the CSV so I can import it into an array.  

Set objConnection = New ADODB.Connection

objConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & CSVfolder & ";Extended Properties='text;HDR=NO;FMT=Delimited'"

objConnection.Open

Set objRecSet = New ADODB.Recordset

objRecSet.ActiveConnection = objConnection

objRecSet.source = "SELECT * FROM [" & CSVfile & "];" 

objRecSet.Open , , adOpenStatic

Open in new window

This works great.  However, the presence of the Byte Order Marker at the beginning of the file is causing international special characters to be read in/displayed incorrectly when used in string variables.  If I first use Excel to open and then resave the CSV file as a regular comma delimited CSV file, not UTF-8, then the special characters import and display correctly. But I'm trying to avoid that step.

Is there something I can add to my connection string, or a VBA method I can use to remove the BOM from the file before I import it?
* ADODB* ConnectionStringsVBAMicrosoft Word

Avatar of undefined
Last Comment
aikimark

8/22/2022 - Mon