2013-04-06 53 views
0

我必須編寫代碼,以密碼保護表,並且密碼保護細胞也。至此我已經嘗試下面的代碼如何密碼保護格或單元格區域用perl

#!c:\perl\bin\ 
use strict; 

use Win32::OLE qw(in with); 
use Win32::OLE::Const 'Microsoft Excel'; 
use Win32::OLE::Variant; 
use Win32::OLE::NLS qw(:LOCALE :DATE); 

$Win32::OLE::Warn = 3; # Die on Errors. 
use Spreadsheet::WriteExcel; 
my $excelfile = 'protect.xls'; 

my $Excel = Win32::OLE->GetActiveObject('Excel.Application') 
    || Win32::OLE->new('Excel.Application', 'Quit'); 
$Excel->{DisplayAlerts}=0; 
my $Book = $Excel->Workbooks->Add(); 
$Book->SaveAs($excelfile); 
my $Sheet = $Book->Worksheets("Sheet1"); 
$Sheet->{Name} = "DidItInPerl"; 

my $vtfalse = Variant(VT_BOOL, 0); 
my $vttrue = Variant(VT_BOOL, 1); 
my $Range = $Sheet->Range("A1:c2"); 

$Sheet->Protection->AllowEditRanges->Add({Title=>"MyRange", Range=>$Range},'1222'); 


$Sheet->Protect(           
{DrawingObjects=>$vttrue, 
Contents=>$vttrue, 
Scenarios=>$vttrue,}); 

但這種細胞Excel 2007中不管用 。

回答

0

你需要改變這一行:

$Sheet->Protection->AllowEditRanges->Add({Title=>"MyRange", Range=>$Range},'1222'); 

到:

$Sheet->Protection->AllowEditRanges->Add(
    "MyRange", $Range, '1222'); 
+0

嗨gangabass !!,給出解決方案仍然沒有工作 – arun 2013-04-09 15:48:59

+0

您發表對我的作品,除了這一行相同的代碼(我也改變了它,因爲我有本地化的版本的Excel和表名不是Sheet1等俄文:'我的$ Sheet = $ Book-> Worksheets(1);' – gangabass 2013-04-10 06:43:23

相關問題