none
Проблема с макросом в ActiveWorkbook.Refreshall

    Общие обсуждения

  • Здравствуйте, товарищи программисты!

    Хотелось бы обратиться к вашему опыту и решить одну маленькую проблемку по VBA.

    Суть в том, что при выполнении в EXCEL довольно громоздкой SQL-процедуры вылетает ошибка

    statement terminated на строке ActiveWorkBook.RefreshAll (код всей процедуры ниже)

    Причём, если в параметрах  задать даты с коротким разрывом, то все данные выгружается без ошибок.

    Сама SQL-продцедура на стороне MSSQL Server 2003 одинаково нормально работает и на большом диапазоне и на маленьком диапазоне дат(правда существенно различается время выполнения), следовательно дело не в нёй.

    Sub Button_click()

    Dim DateFrom, DateTo, OutputQuery As String

    DateFrom = ActiveWorkbook.Worksheets(1).Range("B2:B2")

    DateTo = ActiveWorkbook.Worksheets(1).Range("B3:B3")

    OutputQuery = "set nocount on set Dateformat DMY exec AnnualReport '" & DateFrom & "','" & DateTo & "'"

    Application.ScreenUpdating = False

    Let ConnStr = "OLEDB;Provider=SQLOLEDB.1;Persist Security Info=True;User ID=**;Password = *****;Initial Catalog=***;Data Source=****;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=***;Use Encryption for Data=False;Tag with column collation when possible=False"

    Sheets("Отчёт").Visible = True

    ActiveWorkbook.Connections("MyConnection").OLEDBConnection.Connection = ConnStr

    ActiveWorkbook.Connections("MyConnection").OLEDBConnection.BackgroundQuery = False

    ActiveWorkbook.Connections("MyConnection").OLEDBConnection.CommandText = Array(OutputQuery)

    With ActiveWorkbook.Connections("MyConnection")

    .Name = "MyConnection"

    .Description = ""

    End With

    ActiveWorkbook.RefreshAll

    With ActiveWorkbook.Connections("MyConnection").OLEDBConnection

    .Connection = "OLEDB;Deleted by macros"

    End With

    Application.ScreenUpdating = True

    Range("A1").Select

    Sheets("Отчёт").Select

    End Sub

    Ещё небольшой разъяснение. параметры дат берутся с одного листа формы(титульного), а данные вставляются во второй лист(Отчёт).

    Есть у кого какие предположения, что в коде может быть не так?



    20 июня 2013 г. 9:38