Никогда не работал с базами, а тут надо ... Запрос рабочий, база есть, доступ тоже, логин-пароль верные ...
Код
Sub SQLQuery_1()
Dim varConn As String
Dim varSQL As String
Range("A1").CurrentRegion.ClearContents
varConn = "Provider=SQLOLEDB.1;Persist Security Info=True;User
ID=****;Password=*****;Initial Catalog=Orion050914;Data
Source=192.168.30.82\SQLSERVER2008;Use Procedure for Prepare=1;Auto
Translate=True;Packet Size=4096;Workstation ID=WS-25-2;Use Encryption
for Data=False;Tag with column collation when possible=False"
varSQL = "SELECT Person.ID as ID, Person.Name + ' ' +Person.FirstName + '
' +Person.MidName as FIO FROM pList as Person ORDER BY ID ASC"
With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))
.Name = "Q10"
.CommandText = varSQL
.CommandType = xlCmdSql
.Refresh BackgroundQuery:=False
.RefreshStyle = xlOverwriteCells
.Refresh
End With
End Sub
Выдаёт на строке " With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1"))" Runtime error 1004,никак не могу понять почему... Помогите плз...
Всю строку подключения дальше не прописывал, остальное всё то же, что и у вас. Range("A1").CurrentRegion.ClearContents - этого может не хватить. Если на листе уже есть QueryTables, то лучше пробегите по этой коллекции листа и удалите QueryTable лежащие в области окружения ячейки A1. Успехов.
Михаил Лебедев написал: Ну, тогда либо нет активного листа (откуда запускаете макрос? попробуйте Sheets("ИмяЛист") вместо ActiveSheet), либо ... еще что-то О_о
Лист есть, макрос запускаю с листа, это первое что пришло в голову, но к сожалению - лист есть.
Sub SQLQuery_2()
Dim vWorkbook As Workbook
Dim vWorksheet As Worksheet
Dim vSQL As String
Dim cn As New ADODB.Connection
Dim rstRes As New ADODB.Recordset
Dim rstCom As New ADODB.Command
cn.Open "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=****;Password=*****;Initial Catalog=Orion050914;Data Source=192.168.30.82\SQLSERVER2008;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=WS-25-2;Use Encryption for Data=False;Tag with column collation when possible=False"
Set rstCom.ActiveConnection = cn
Set vWorkbook = ActiveWorkbook
vSQL = "SELECT Person.ID as ID, Person.Name + ' ' +Person.FirstName + ' ' +Person.MidName as FIO FROM pList as Person ORDER BY ID ASC"
rstCom.CommandText = vSQL
Set rstRes = rstCom.Execute
ActiveSheet.Range("A2").CopyFromRecordset rstRes
End Sub