Страницы: 1
RSS
Проблема с QueryTable: ошибка при запуске
 
Здравствуйте. У меня поставлена задача, вывести целиком таблицу в Excel из SQL Server. Написав простой код, который просто выводит данные из таблицы, меня такой вариант не устроил , и я начал бегать по просторам интернета и искать способы , и нашел QueryTable, как вывести красивую табличку, но вот незадача , при запуске, все время ругается.

Код
'Set QT1 = ActiveWorkbook.Worksheets(2).ListObjects.Add(SourceType:=xlSrcExternal,
              'Source:=Array(s), LinkSource:=True, _
              'TableStyleName:=xlGuess, Destination:=Sheets("Лист2").Range("A1")).QueryTable
              
    'ct = Sheets("Лист4").Range("A2").Value + ".dbo." + Sheets("Лист4").Range("A3").Value
Что с ним не так?
 
Файл есть? Как ругается? Подключить просто данные через "| ДАННЫЕ->Из других источников->С сервера SQL Server |" пробовали? При пошаговом запуске - на какой строке кода ругается?
Изменено: Михаил Лебедев - 19.02.2015 09:06:56
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Ругается , ошибка синтаксиса
Могу скинуть код целиком
Код
Sub Macro1()
    Dim st As String
    Dim ct As String
    Set cn = CreateObject("ADODB.Connection")
    Dim rs As New ADODB.Recordset
    
   Dim QT1 As QueryTable
    
    cn.Provider = "SQLOLEDB.1"


    cn.ConnectionString = "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=" + Sheets("Лист4").Range("A2") + ";Data Source=" + Sheets("Лист4").Range("A1") + ";Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"
                            
    cn.Open
    rs.CursorType = adOpenStatic
    rs.LockType = adLockBatchOptimistic
    
    
    rs.Open "select * from dbo." + Sheets("Лист4").Range("A3") + "", cn
   
    st = "OLEDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Data Source=tstfinserver;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=CB901666;Use Encryption for Data=False;Tag with column collation when possible=False"
    
    Set QT1 = ActiveWorkbook.Worksheets(2).ListObjects.Add(SourceType:=xlSrcExternal,
              Source:=Array(s), LinkSource:=True, _
              TableStyleName:=xlGuess, Destination:=Sheets("Лист2").Range("A1")).QueryTable
              
    ct = Sheets("Лист4").Range("A2").Value + ".dbo." + Sheets("Лист4").Range("A3").Value
   
    
   
    
 End Sub
 
Ругается именно с команды Set.
То есть. я ввожу данные о сервере в одну ячейку, в другую БД, а в третью ввожу таблицу. он это считывает. и даже выводит , если вставляю вот этот код :
Код
Лист2.Range("A2").CopyFromRecordset rs 
Вместо Set то выводится просто данные из таблицы. В данном случае , это не подходит, нужен именно QT. и уже как не пробовал....
Изменено: Dmitry95 - 19.02.2015 10:30:38
 
А какие библиотеки у Вас подключены?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Подключил у себя Microsoft ActiveX Data Objects 6.1 Library
На Set перестал код ругаться
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
У меня подключена Microsoft ActiveX Data Objects 2.8 Library  
 
Михаил Лебедев. подскажите пожалуйста. Как поместить, в список библиотек, более новую библиотеку?
 
Доброе время суток
Dmitry95, что у вас находится в Array(s)? По идее нужно писать, судя по вашему коду
Код
    Set QT1 = ActiveWorkbook.Worksheets(2).ListObjects.Add(SourceType:=xlSrcExternal,
              Source:=st, LinkSource:=True, _
              TableStyleName:=xlGuess, Destination:=Sheets("Лист2").Range("A1")).QueryTable
 

Так же может "ругаться", если ActiveWorkbook.Worksheets(2) не есть Sheets("Лист2") - умная таблица добавляется в коллекцию таблиц только для того же листа.
И поясните, пожалуйста, зачем вам для получения QueryTable нужна библиотека ADODB?
Изменено: Андрей VG - 27.02.2015 08:32:48
 
вместо Михаила:
в VBA редакторе - Tools - Reference (и прокрутите вниз - поставьте птицу)... как-то так (для xl2010 - она там есть, нужная)
Изменено: JeyCi - 27.02.2015 08:36:05
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Всем спасибо огромное.!!! Целую неделю я тупил с этим кодом. Но в конце концов, осилил)
А по поводу библиотек, я их нашел, но там нужно их обновлять, но так как я студент, у меня ограниченный доступ)
Страницы: 1
Наверх