Цитата:
Сообщение от
smoyk
Интересно

Я у randrews спрашивал как это делается, но он промолчал((
Например, так:
в новом файле экселя запускаем импорт внешних данных (Данные-Импорт внешних данных-Импортировать данные...)
На выходе получаем на листе объект QueryTable. Он нам и понадобится.
Далее, допустим, надо построить отчет, на вход которого подается дата (например, товарные остатки на дату).
Дата будет в ячейке $A$1
Тогда пишем следующий макрос и привязываем его к какой-нибудь кнопке на листе:
Код:
Dim dtmReport As Date
Dim strSQL As String
dtmReport = Range("$A$1").Value
strSQL = "EXECUTE dbo.Proc_Get_Inventory " & "'" & Year(dtmReport) _
& "-" & Month(dtmReport) & "-" & Day(dtmReport) & "'"
Range("D14").Select
With Selection.QueryTable
.RefreshStyle = xlInsertDeleteCells
.Connection = Array(Array( _
"ODBC;Description=Navision;DRIVER=SQL Server;SERVER=192.168.1.1;UID=ВАШ ЛОГИН;;APP=Microsoft Data Access Components;WSID=MYWORKSTATION" _
), Array("OV;DATABASE=MYCOMPANY"))
.CommandText = Array(strSQL)
.Refresh BackgroundQuery:=False
End With
Запускаем макрос, получаем данные. Вместо ХП в переменную strSQL можно написать какой-нибудь свой запрос.