我正在使用PERL腳本通過OLE在現有的Excel文件上創建工作簿。 我想添加一個新的工作簿該指令 -無法使用PERL腳本打開工作簿
$Book = $Excel->Workbooks->Add();
,然後用它執行某些操作。 但是,在執行此代碼時,我遇到了$ Book始終等於零的情況,並且之後excel變得沒有響應。 我包括下面的代碼片段:
use File::Spec;
use Win32::OLE;
use File::Basename;
use Cwd 'abs_path';
use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE qw(in with);
use Win32::OLE::Variant;
use Win32::OLE::NLS qw(:LOCALE :DATE);
use constant false => 0;
use constant true => 1;
use constant NULL => 0;
my $Excel = "";
my $Book = 0;
my $Sheet_1 = "";
my $excelfile = " ";
print "execl";
my $RC = false;
$Excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit');
$Excel->{DisplayAlerts}=1;
$Excel->{Visible} =1;
$excelfile=E:\script\workbook.xlsx;
$Book = $Excel->Workbooks->Add();
print "\n".$excelfile."\n";
if ($Book==0)
{print "close any open Excel file\n If problem persist close Excel application from task manager";
#return $RC;
$Excel->Close();
}
$Sheet_1 = $Book->Worksheets(1);
$Sheet_1->Activate();
$Sheet_1->{Name} = "testing_sheet";
任何指針什麼我做錯了嗎?
免責聲明:我在這個總的小白:P
感謝您的回覆。我試過調試代碼,看起來在保存文件時存在一些問題。我得到一個Win32 :: OLE錯誤代碼0x80010105:「服務器拋出一個異常」在METHOD/PROPERTYGET「SaveAs」 你知道爲什麼會發生這種情況嗎? 我在幾個不同的系統上嘗試過相同的代碼。它似乎在某些機器上工作,但不在其他機器上。 – Rishi
因此,代碼正在工作,但您在某些機器中遇到問題。你有沒有試過使用本地目錄(%TEMP%)? – user1126070