Оператор SELECT выполняется в самой базе данных, но вы хотите отправить значения из EXCEL. Поэтому вы должны использовать
cn.Execute "INSERT .... VALUES (" & excelcell_or_variable & ");"
в конечном итоге в цикле для обработки всех строк / столбцов и т. Д.
Надеюсь, что помогает
удачи
РЕДАКТИРОВАТЬ ...
не забывайте кавычки, окружающие символы CHAR и их взаимные обозначения; Я использую
' ....
' .... "...VALUES (" & T(Q(MyStringCell)) & T(MyNumCell) & Q(MyLastTextCell) & ");"
' ....
' surrounds a string by single quotes
Private Function Q(Arg as String) As String
Q = "'" & Arg & "'"
Return
' appens a comma to a string
Private Function T(Arg as String) As String
T = Arg & ","
Return
РЕДАКТИРОВАТЬ 2
Я полагаю, что в EXCEL все значения, которые вы хотите вставить в БД, находятся в одной строке ...
Предположим, что у вас есть source_range, который содержит более 1 строки, вы должны запустить оператор INSERT для каждой строки в этом диапазоне. Вы используете свойство .Rows
для возврата одной строки из диапазона. И вы отправляете несколько столбцов в оператор INSERT в одной строке, используя .Cells(1, 1)
, .Cells(1,2)
.... и т. Д.
пример:
Sub Test()
Dim MyRange As Range, MyRow As Range
Set MyRange = Range([B4], [C8]) ' source range
For Each MyRow In MyRange.Rows ' get one row at the time from source range
Debug.Print MyRow.Cells(1, 1), MyRow.Cells(1, 2)
' replace the above by your INSERT statement
Next MyRow
End Sub