Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Excel. Закрепить области из Perl (http://forum.oszone.net/showthread.php?t=146655)

sergvg 30-07-2009 15:38 1181580

Excel. Закрепить области из Perl
 
Приветствую, уважаемые участники!

Имею: самописный Perl-скрипт по созданию и заполнению книги Excel данными.
Задача: добавить в скрипт автоматическое закрепление области, так чтобы при прокручивании книги вправо, первых два столбца оставались видимыми.

Пробовал: открыл сгенерированный файл, включил запись макроса, выделил ячейку C1, включил закрепление областей, остановил запись макроса, залез в VBA (Alt+F11), в коде макроса увидел код:

Код:

    Range("C1").Select
    ActiveWindow.FreezePanes = True

Делаю в Perl:
Код:

  my $excel = Win32::OLE -> GetActiveObject( 'Excel.Application' ) || Win32::OLE -> new( 'Excel.Application', '' );
  my $workbook = $excel -> Workbooks -> Add();
  my $sheet = $workbook->Worksheets(1);
#................
  $sheet->Range("C1")->Select;
  $excel -> ActiveWindow -> {FreezePanes} = "True";

В итоге, после выполнения скрипта, область не закрепляется... что я делаю не так ?

amel27 30-07-2009 17:08 1181640

sergvg, попробуй вместо "ActiveWindow" поставить "Windows(1)"

sergvg 31-07-2009 07:49 1182141

amel27, не помогло

amel27 31-07-2009 09:52 1182195

sergvg, так вроде работает:
Код:

use Win32::OLE;

my $excel = Win32::OLE -> GetActiveObject('Excel.Application') || Win32::OLE -> new( 'Excel.Application', '' );
my $workbook = $excel -> Workbooks -> Add();
my $sheet = $workbook->Worksheets(1);
#................
$sheet->Range("C1")->Select;
$excel -> ActiveWindow -> {'FreezePanes'} = (1 == 1);


sergvg 31-07-2009 11:14 1182254

о, спасибо, заработало.

достаточно просто 1 присвоить... Смутило меня ещё то, что такой вот код работает:
Код:

with ($excel -> ActiveWindow,  "FreezePanes" => "True", SplitColumn => 2, SplitRow => 0);
Только делает немного не то.


Время: 11:51.

Время: 11:51.
© OSzone.net 2001-