シート名を出力するスクリプトです。エラー処理はばっさり削ってます。
use Win32::OLE; my $filename = 'd:\Book1.xls'; # 処理対象の Excel book sub printSheetNames { my $book = shift; my $i = 0; while (my $sheet = $book->Worksheets(++$i)) { print $sheet->{Name}, "\n"; } } my $excel = Win32::OLE->GetActiveObject('Excel.Application') || Win32::OLE->new('Excel.Application', 'Quit'); my $book = $excel->Workbooks->Open($filename); printSheetNames($book); $book->Close(); $excel->Quit();
複数のシートがあるExcelファイルの全てのシート名と
Excelがインストールされている必要があります。
use strict; use warnings; use Win32::OLE; my $filename = 'hoge.xls'; #Excelファイル名 sub print_sheet_name { my $book = shift; # Excelワークブック my $i = 0; while (my $sheet = $book->Worksheets(++$i)) { print $sheet->{Name}, "\n"; } } my $excel; eval { Win32::OLE->GetActiveObject('Excel.Application'); }; if ($@) { die "Excelが入っていません。 $@"; } unless (defined $excel) { $excel = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;}) or die "Excelが起動できません。"; } my $book = $excel->Workbooks->Open($filename) or die Win32::OLE->LastError(); print_sheet_name($book); $book->Close(); $excel->Quit(); exit;
各シートを順に選択する
この文章だけですと意味が分からないので、もう少し具体的に機能を説明してください。
何を使ってどのように選択したいのですか?
各シートをタブ区切りのテキストファイルとして保存したいのです。