15.07.2015, 02:05 | #1 |
MCTS
|
Как распечатать только активные листы в Excel?
Если я открываю шаблон в Excel и печатаю его, то по умолчанию он выводит на печать только активные листы. Однако если я печатаю из кода методом
X++: boolean printWorkBook(int _copiesNum = 1, int _workSheetNum = currentWorkSheetNum, str _activePrinter = "") { COM comWorkBook; COMVariant comPageFrom, comPageTo, comNumOfCopies, comPrinterName, comNullValue = ComVariant::createFromBoolean(false); //COMVariant::createNoValue(); ; try { comWorkBook = this.getComDocument(); //getWorkSheet(_workSheetNum); if (comWorkBook) { comPageFrom = COMVariant::createNoValue(); comPageTo = COMVariant::createNoValue(); comNumOfCopies = COMVariant::createFromInt(_copiesNum); comPrinterName = COMVariant::createFromStr(_activePrinter); comWorkBook.printOut(comPageFrom, comPageTo, comNumOfCopies, comNullValue, comPrinterName); return true; } } catch (Exception::Error) { // this.finalize(); } catch(exception::internal) { // this.finalize(); } return false; }
__________________
I could tell you, but then I would have to bill you. |
|
15.07.2015, 10:33 | #2 |
Участник
|
Насколько мне известно специальных параметров никаких нет, могу ошибаться :-)
Метод printOut применим не только к объекту книге (Workbook) но и к объекту листу (Worksheet). Так что скорее всего придется перебирать (тем более в функцию вы уже передаете номер листа). |
|
|
За это сообщение автора поблагодарили: twilight (1). |
15.07.2015, 10:45 | #3 |
Участник
|
"Если ничего не получается, попробуйте почитать инструкцию"
При открытии файла Excel, по умолчанию, Вы выполняете метод printOut() для текущего (активного) листа Excel. Т.е. для объекта WorkSheet, а не для объекта WorkBook, как в Вашем методе. Соответственно, для печати конкретного листа надо получить ссылку на нужный лист и у полученного объекта использовать метод printOut() - список параметров такой же. Получить ссылку на активный в данный момент лист можно через метод activeSheet(), например, так X++: COM comWorkSheet; ; comWorkSheet = m_comDocument.activeSheet(); comWorkSheet.printOut(comPageFrom, comPageTo, comNumOfCopies, comNullValue, comPrinterName);
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: twilight (3). |
|
|