В конце концов пришёл к выводу , что нужно использовать VB для excel.
Но опять проблема - не могу передать в запрос SQL в VB параметр
Dim sqlQuery As String
sqlQuery = "SELECT AVG(value) FROM public.data_raw " & _
"WHERE archive_itemid = 6841 " & _
"AND source_time BETWEEN " & hstart & " AND " & hend & ";"
rs.Open sqlQuery, conn, adOpenStatic, adLockReadOnly
т.е. компилируется без ошибок но не выполняется-макрос прерывается с ошибкой.
Всё дело оказалось в длине bigint поля source_time. В БД это тип bigint и значения в microsoft file-format.
Это с 1 января 1601 г. в 100 нс интервалах, в результате значение сейчас около 133958016000000000 т.е. 18 знаков.
И если задать тип Long и значение меньше 2147483647(10 знаков) то макрос(с амперсандами который)
не уходит в ошибку ,но понятно возвращает пустоту. Тип LongLong отсутствует в VB -вероятно VB 32 разрядный, хотя система 64-х.
(Не нашёл где найти разрядность VB Microsoft Visual Basic for Applications 7.1, Microsoft Office 2013).
Как обойти сей момент пока нет мыслей-установить VB 64-х, вроде очевидно но кто заплатит за лицензию.
Может кто подскажет другое решение