Создайте таблицу в SQL Server из листа Excel, используя VBA и ADO - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь программно создать таблицу в базе данных 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

Это ошибка, которую я получаю:

enter image description here

...