dポイントプレゼントキャンペーン実施中!

Perl でワードファイルのヘッダーを取得するには?
perl, v5.10.0
windowsXP
ワードファイル:word2003

<行いたいこと>
C:\temp\word.doc のワードファイルのヘッダー(複数行)を取得したい。

<状況>
インターネットでワードファイルの本文は取得できる例がありましたが、
ヘッダーを取得する方法がわかりませんでした。
下記のプログラムでは
・ワードのヘッダーは 0 が表示される。
・ワードの本文は取得できて表示される。
(ヘッダーを表示しようといろいろしてみましたが、できていません)

よろしくお願いいたします。

<プログラム>

use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';

my $word = Win32::OLE->GetActiveObject('Word.Application') ||
Win32::OLE->new('Word.Application', 'Quit') || die;

# 読み込み
my $doc = $word->Documents->Open('C:\temp\word.doc') || die;
my $headers = $doc ->ActiveWindow->ActivePane->View->{SeekView} = wdSeekCurrentPageHeader;

########## ヘッダー取得(→うまくいかない)##########
print "$headers->{SelectionTypeText}\n"; #null
foreach (in $headers)
{
print $_->{SelectionTypeText}->{'Text'} . "\n"; #null
print $_ . "\n"; #0
print $_->{'Text'} . "\n"; #null
print $headers . "\n"; #0
}

########## 本文取得(→OK)##########
my $paras = $doc->Paragraphs;
foreach (in $paras)
{
print $_->Range->{'Text'} . "\n";
}

$doc->Close();

A 回答 (1件)

VBSのhelpを身ながらやってみたところ、ヘッダーを取得することができました。



use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';

my $word = Win32::OLE->GetActiveObject('Word.Application') ||
Win32::OLE->new('Word.Application', 'Quit') || die;

# 読み込み
my $doc = $word->Documents->Open('E:\test.doc') || die;

my $header = $doc->Sections(1)->Headers(1);
my $s = $header->Range->Text;
print "$s\n";
    • good
    • 0
この回答へのお礼

ありがとうございました!
大変助かりました。
ヘッダーのテキストをどうやって取得するのかわからず、
作業がストップしていました。
独力で作業を続行しても、時間がかかっていたと思います。
ありがとうございました。

お礼日時:2008/06/14 23:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!