Мне кажется, проблема в том, что вы пытаетесь получить значения ячеек G6 и G7 в своем запросе INSERT. Вместо этого вам нужно объединить их в запрос вставки.
sql = "insert into Invoices (Customer, Address) " & _
"values('" & Range("G6") & "', '" & Range("G7") & "')"
Создание команд SQL таким образом делает вас уязвимым для SQL-инъекций. Лучшей альтернативой является использование параметризованного запроса.
Dim cmdInsert As New ADODB.Command
With cmdInsert
.Prepared = True
.CommandType = adCmdText
.CommandText = "INSERT INTO Invoices (Customer, Address) VALUES (?, ?)"
Set .ActiveConnection = con
End With
cmdInsert.Parameters(0).Value = Range("G6").Value
cmdInsert.Parameters(1).Value = Range("G7").Value
cmdInsert.Execute
Вам также следует использовать драйвер Jet для подключения вместо драйвера ODBC. Вместо этого используйте эту строку подключения.
"Provider=Microsoft.Jet.OLEDB.4.0;Data source=c:\Users\Public\Public Desktop\InvoiceRecords.mdb;"