Мой excel-лист связан с данными sql -сервера. Мои клиенты смогут записывать некоторые столбцы обратно на сервер sql. Имена файлов в формате Excel являются переменными, но имя листа и столбцы всегда имеют значение c. Я попробовал это с помощью кнопки и vba, но это привело к ошибке:
Syntaxerror (отсутствует оператор) в выражении запроса 'UPDATE hbs SET lieferinfo_prio_neu = xlsx.liefer_prio_neu FROM [Provider = SQLOLEDB; Data Source = myserver ; Database = mydb; UID = myuser; PWD = mypass;]. [Tbl_haka_base_size] hbs JOIN [Tabelle3 $] xlsx ON xlsx.Artikelnummer '
Внутреннее имя листа Excel -' Tabelle3 ', custom-name is 'Hakabase':
Я пробовал оба имени без какого-либо результата.
Мой код:
Dim excelConn As String
Dim sqlServerConn As String
Dim sqlCommand As String
Dim conn As ADODB.Connection
excelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& ThisWorkbook.FullName _
& ";Extended Properties=""Excel 12.0 Xml;HDR=Yes;IMEX=1"";"
sqlServerConn = "[Provider=SQLOLEDB;" _
& "Data Source=myserver;" _
& "Database=mydb;" _
& "UID=ymuser;PWD=mypass;]"
sqlCommand = "UPDATE hbs " _
& " SET lieferinfo_prio_neu = xlsx.liefer_prio_neu " _
& " FROM " & sqlServerConn & ".[tbl_haka_base_size] hbs " _
& " JOIN [Tabelle3$] xlsx " _
& " ON xlsx.Artikelnummer=hbs.artikelnummer"
Set conn = New ADODB.Connection
conn.Open excelConn
conn.Execute sqlCommand
Я также пытался подключиться к sqlserver + присоединиться к excel-данным через openrowset, но сервер запретил это:
& " JOIN OPENROWSET('MSDASQL', " _
& " 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" _
& ThisWorkbook.FullName & "', 'SELECT * FROM [Tabelle3$]') xlsx" _
Устанавливаемый ISAM не найден
Думаю, мне нужно создать связанный сервер для каждого файла и включить «InProcess» для этих файлов. Это невозможно, потому что файлы переменные.