Я пытаюсь программно создать таблицу в базе данных SQL Server 2008 R2 из Excel.
Я использовал листы Excel в качестве таблиц SQL, и раньше я успешно выполнял SQL-запросы к данным Excel. Я также могу подключиться к базе данных SQL с помощью правильной строки подключения и отправлять или получать данные из Excel. Тем не менее, я хочу практически объединить оба метода и ВЫБЕРИТЬ все на листе с запросом SQL, а затем ВСТАВИТЬ В базу данных SQL в качестве новой таблицы. Поскольку при подключении к Excel используется поставщик Microsoft.ACE.OLEDB.12.0
, а при подключении к базе данных SQL Server используется поставщик SQLNCLI10
, что усложняет задачу. Я сделал это с Excel и Access, так как оба используют провайдер ACE
. Можно ли вообще это сделать?
Моя цель:
INSERT INTO My_SQL_Table SELECT * FROM Excel Sheet
Мой код VBA:
Sub Demo()
Dim sConnXL As String
Dim sConnSQL As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
sConnXL = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text;"""
sConnSQL = "Provider=SQLNCLI10;Server=ABC0151;Database=MyDatabase;Trusted_Connection=yes;"
'sConnSQL = "driver={SQL Server};" & "server=LKFDSQL05;uid=MMRUser;pwd=mVgpR05zoiUlDKdTXweHgz;database=MMR"
sSQL = "INSERT INTO My_SQL_Table SELECT * FROM [Excel 8.0;HDR=NO;IMEX=2;DATABASE=" & ThisWorkbook.FullName & "].[Dashboard$]"
cn.Open sConnSQL
Set rs = New ADODB.Recordset
rs.Open sSQL, cn
cn.Close
Set cn = Nothing
End Sub
Это ошибка, которую я получаю: