Please have a look at the following source code and tell me what could be
wrong. I'm trying to use English worksheet function and number formatting in
non-English version of MS Excel.

Has anybody an idea why single cell calls are interfaced correctly but range
calls are not?
It's quite ineffective to fill in a whole sheet cell by cell, isn't it?


use Win32::OLE qw( with );
use Win32::OLE::NLS qw(:DEFAULT :LANG :SUBLANG);
use strict;

# I believe this sets English environment
my $lgid = MAKELANGID(LANG_ENGLISH, SUBLANG_DEFAULT);
$Win32::OLE::LCID = MAKELCID($lgid);

my $excel;      # MS Excel : OLE variable
my $book;       # Workbook : OLE variable
my $sheet;       # Worksheet : OLE variable
my $area;       # Range : OLE variable

  $excel = Win32::OLE->new('Excel.Application');
  $excel->{Visible} = 1;
  $excel->Workbooks->Add;
  $book = $excel->Workbooks(1);
  $sheet = $book->Worksheets(1);

# It works here, I can use decimat dot and IF function........
  $sheet->Range("A1")->{Formula} = '1.2222';
  $sheet->Range("B1")->{Formula} = '=2*1.5';
  $sheet->Range("C1")->{Formula} = '=IF(A1>0,B1,A1)';

# Now I'm trying to use Czech numbers and funtion and it's working
too.......
  $sheet->Range("A2:C3")->{Formula} = (['1,2222', '=2*1,5',
'=KDYŽ(A2>0;B2;A2)'],
                                       ['1,2222', '=2*1,5',
'=KDYŽ(A3>0;B3;A3)']);

# Now I'm trying to use English numbers and funtion but IT IS NOT WORKING
  $sheet->Range("A4:C5")->{Formula} = (['1.2222', '=2*1.5',
'=IF(A4>0,B4,A4)'],
                                       ['1.2222', '=2*1.5',
'=IF(A5>0,B5,A5)']);

-- Petr Smejkal

_______________________________________________
ActivePerl mailing list
[EMAIL PROTECTED]
http://listserv.ActiveState.com/mailman/listinfo/activeperl

Reply via email to