Сам документ Excel открываю так:
Код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | Excel := CreateOleObject( 'Excel.Application' );
Excel . Workbooks . Open( 'C:\test.xls' , False );
for i := 1 to Excel . Workbooks[ 1 ].Sheets . Count do
begin
Workbook := Excel . ActiveWorkBook . WorkSheets[i];
Workbook . PageSetup . LeftMargin := 0 ;
Workbook . PageSetup . RightMargin := 0 ;
Workbook . PageSetup . TopMargin := 0 ;
Workbook . PageSetup . BottomMargin := 0 ;
end ;
SumPages := 0 ;
for i := 1 to Excel . WorkBooks[ 1 ].Sheets . Count do
begin
H := Excel . WorkBooks[ 1 ].Worksheets[i].HPageBreaks . Count+ 1 ;
if H = 0 then H := 1 ;
V := Excel . WorkBooks[ 1 ].Worksheets[i].VPageBreaks . Count+ 1 ;
if V = 0 then V := 1 ;
SumPages := SumPages + V*H;
end ;
ShowMessage(IntToStr(SumPages));
end ;
|
Проблема в том, что на разных компьютерах на WIndows 7 с одинаковыми принтерами, но с чуть-чуть разными версиями Майкрософт офиса программа считает страницы по-разному. В одном документе визуально даже видно 3 горизонтальных разрыва, а программа выдает аж 37 разрывов! Хотя на первом компьютере все верно - 3 горизонтальных разрыва.
Задача: считать точное количество сраниц, которые будут распечатаны при печати файла Excel.
Нашел в интернете использование макроса ExecuteExcel4Macro("GET.DOCUMENT(50)"), который якобы возвращает количество страниц в документе Excel. Но с этим я не работал. Помогите решить поставленую задачу. Если можно популярно-популярно объясните как можно создать макрос в Excel и из Дельфи запустить его, и узнакть количетсво сраниц которые потребуются при печати документа.