1

Тема: Excel VBA: Создать файл xls, вставить в него данные, закрыть и ...

... обратиться к нему как к БД через ADO.

Проблема в том что создаваемый файл xls не должен появляться на экране. Кострукция типа:


Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.UserControl = False
Set xlWb = xlApp.Workbooks.Add
xlWb.Worksheets.Add().Name = "system"
Set xlWs = xlWb.Worksheets("system")
xlWs.Cells(1, 1).CopyFromRecordset oRecordset
xlWb.SaveAs Filename:=ActiveWorkbook.Path & "\rashodomeri_tmp.xlsx", FileFormat:=xlOpenXMLWorkbook, ConflictResolution:=xlLocalSessionChanges

Выводит на экран файл и всё тут

Для ясности напишу зачем я это делаю.
Есть задача отобразить данные из MS SQL сервера, при условиях:
1. Доступ к БД через интернет (достаочно медленный) - количество запросов должно быть сведено к минимуму.
2. Данные в БД хранятся в "сыром" т.е. бинарном виде - требуется преобразовать эти данные в привычную человеку форму.
3. В один из столбцов в БД пишется дата (формат DateTime) нужно вывести 3 вида отчета - дневной, месячный и годовой.

Дневной вид отчета делается легко: запрос с between, на лету из RecordSet данные конвертирую в человеческий формат. А вот месячный и годовой, решил сделать так: Сначала такой же запрос как и в дневном (только период дат побольше), потом копирование всего этого хозяйства в локальную таблицу, потом обращение к этой таблице как к БД через ADO с группировкой по месяцу или году и вуаля...
... но тут блин выскакивает на экран новый файл и как с ним боротться не знаю

Сейчас буду копать в сторону встроенных процедур на сервере с БД

2

Re: Excel VBA: Создать файл xls, вставить в него данные, закрыть и ...

Может быть стоит запускать это из WSH?

3

Re: Excel VBA: Создать файл xls, вставить в него данные, закрыть и ...

1) А вы книгу же не закрываете. По крайней мере в коде я этого не вижу.

xlApp.Quit

2) Может стоит всё таки оптимизировать сам запрос к серверу или страницу выдачи информации ? На чём серверная часть собрана PHP / ASP ? Или её нет ? И все обращения делаются через механизмы самого SQL сервака ?

3) Думаю стоит связаться по ICQ. Удобнее будет. 252505765

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

4 (изменено: -red-, 2012-02-25 02:17:08)

Re: Excel VBA: Создать файл xls, вставить в него данные, закрыть и ...

JSman пишет:

Может быть стоит запускать это из WSH?

Нет, не могу - надо чтоб пользователь мог выбирать дату и номер параметра

Сервер MS SQL 2008, оптимизировать запрос не получится т.к. данные хранятся в бинарном виде и их надо конвертировать в число с плавающей запятой %)
Метод Quit попробую...
Номер моей аськи 127803839