複数のシートがあるExcelファイルの全てのシート名と、各シートを順に選択するPerlスクリプトを教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/09/30 17:47:54
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

ポイント100pt

シート名を出力するスクリプトです。エラー処理はばっさり削ってます。

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();
id:Jupiter2100 No.2

回答回数444ベストアンサー獲得回数74

ポイント100pt

複数のシートがある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;

各シートを順に選択する

この文章だけですと意味が分からないので、もう少し具体的に機能を説明してください。

何を使ってどのように選択したいのですか?

id:adan

各シートをタブ区切りのテキストファイルとして保存したいのです。

2011/09/30 15:38:33
  • id:adan
    ありがとうございました。
    やりたかったことはできましたので、これでクローズとさせていただきます。
    ジュピターさんのコードはa-kuma3さんのコードにエラー処理を加えているだけですが、
    デバッグの時、そのエラーメッセージに助けられましたので、ポイントの振り分けは
    50/50とさせていただきます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません