D
dobozy
Всем привет!
Есть такая проблемка. Требует отчёт, который будет генерится на MS Excel 97 шедульным агентом (что поделаешь так задумано). Скрипт создаёт PivotTable, форматирует её и всё такое. Всё бы ничего, но есть такие проблемы (ма):
1. Call xl.workbooks(1).Close(false, false) не работает ("OLE automation error")
Причём это не работает только для workbook-a на котором создан PivotTable через метод Wizard.
2. Если закрыть на это глаза, то xl.Quit всё решает, но:
Код примерно так выглядит
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
Что кто скажет? Спасибо!
Есть такая проблемка. Требует отчёт, который будет генерится на 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
Что кто скажет? Спасибо!