ОБСУЖДЕНИЕ

Ms Excel 97, Ole, Pivottable и проблемы :-)

7 ответов 5,6 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Всем привет!

Есть такая проблемка. Требует отчёт, который будет генерится на MS Excel 97 шедульным агентом (что поделаешь так задумано). Скрипт создаёт PivotTable, форматирует её и всё такое. Всё бы ничего, но есть такие проблемы (ма):

1. Call xl.workbooks(1).Close(false, false) не работает ("OLE automation error")
Причём это не работает только для workbook-a на котором создан PivotTable через метод Wizard.

2. Если закрыть на это глаза, то xl.Quit всё решает, но:
  • работает на W2000 Server
  • На XP - Excel crash происходит и инстанс остаётся висеть в памяти

Код примерно так выглядит

Set xl = createObject("excel.Application")
...
Call xl.Workbooks.OpenText(f.FilePath)
...
Call xl.ActiveWorkbook.WorkSheets.Add
Call xl.WorkSheets(1).PivotTableWizard(1, cDataSourceName & "1!" & maxSelectionRange, "Sheet1!R5C1", g_ReportHeading, , , , False, , , , True)
...
xl.displayalerts = False
Сall xl.workbooks(1).SaveAs(strReportFilename, -4143)
Call xl.workbooks(1).Close(False, False) 'Call xl.workbooks.close тоже не работает, флаг Saved = True
Call xl.Quit
Set xl = Nothing

Что кто скажет? Спасибо!
 
Почему в одном месте xl.ActiveWorkbook, а в другом xl.workbooks(1)? Может везде xl.ActiveWorkbook использовать?
 
Я так понял это не имеет значения... Я и так и так использовал...
 
Здесь второй параметр - имя файла.
Call xl.workbooks(1).Close(False, False)
 
в коде удивляет создания пивотныхтаблов (а что - рэндж зафиксировать низя?)...
мобуть - просто создать таблу (исходных данных) по-максимуму строк и менять её, а пивотную - пересчитывать...

значить вот...
запуск шедульных активХэ - это непредсказуемое (страшно-глючное) поведение приложения
воизбежании таких мук, хайлирекоменд - перепишите код для ОО (Сергей приводил пример работы с ХМЛ для ОДФ-а), где сможете обойтись без МСкостылей
да - это отнимет время, но получите предсказуемый результат и кроссплатформенность как бонус :(

ОДФ документирован и стандартизован:
http://en.wikipedia.org/wiki/OpenDocument
http://std.dkuug.dk/keld/iso26300-odf/is26...1.0ed2-cs1.html
http://docs.oasis-open.org/office/v1.1/OS/...cument-v1.1.pdf
 
мобуть - просто создать таблу (исходных данных) по-максимуму строк и менять её, а пивотную - пересчитывать...
думаю, что речь идет не о шаблоне, а о создании док-та с "нуля"

воизбежании таких мук, хайлирекоменд - перепишите код для ОО
одно дело писать для "себя", либо для заказчика с "нуля" :( другое дело - доработка существующего приложения и такое изменение архитектуры не за минуту решается...
 
Здесь второй параметр - имя файла.
Call xl.workbooks(1).Close(False, False)

Верно, это строку просто писал по памяти. Эти все параметры необязатeльны. Идущие следом варианты не работают тоже:
close()
close(false)
close(false, strReportFilename)

в коде удивляет создания пивотныхтаблов (а что - рэндж зафиксировать низя?)...
мобуть - просто создать таблу (исходных данных) по-максимуму строк и менять её, а пивотную - пересчитывать...

количество строк и толбцов в исходных данных динамическое. поэтому рейндж тоже динамический. И проблема вообще не в этом :(
Таблица пересчитывается сама, я только программно определяю правила вывода: что строки, а что данные. Тут как раз всё отлично.

В данной задаче шаблон намного неудобней лепить чем просто создать PivotTable.

значить вот...
запуск шедульных активХэ - это непредсказуемое (страшно-глючное) поведение приложения
воизбежании таких мук, хайлирекоменд - перепишите код для ОО (Сергей приводил пример работы с ХМЛ для ОДФ-а), где сможете обойтись без МСкостылей
да - это отнимет время, но получите предсказуемый результат и кроссплатформенность как бонус wink.gif

ОДФ документирован и стандартизован:
http://en.wikipedia.org/wiki/OpenDocument
http://std.dkuug.dk/keld/iso26300-odf/is26...1.0ed2-cs1.html
http://docs.oasis-open.org/office/v1.1/OS/...cument-v1.1.pdf

за ссылки спасибо, но пока я должен работать с тем, что есть. Akupaka верно подметил
 

Статистика тем

Создано
dobozy,
Последний ответ от
dobozy,
Ответы
7
Просмотры
5 559