我需要生成大量具有不同文本的Powerpoint文件(会议程序)。我尝试使用Perl和Win32 :: OLE执行此操作。这适用于设置我发布的文本的颜色除外。我可以设置的只是RGB中的红色值,而不是其他颜色。我使用Powerpoint 2010.此外,我可以通过VBA更改Powerpoint中的颜色。
这是我使用的代码(用#评论 - 是我尝试过的一些选项,但没有用。)
use strict;
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft PowerPoint';
$Win32::OLE::Warn = 2; # Throw Errors, I'll catch them
my $PptApp = Win32::OLE->GetActiveObject('PowerPoint.Application')|| Win32::OLE->new('PowerPoint.Application', 'Quit');
$PptApp->{Visible} = 1;
my $Presentation = $PptApp->Presentations->Open({FileName=>'<input-filename.ppt>',ReadOnly=>1});
my $Slide = $Presentation->Slides(1);
$Slide->{Name} = "Slide1";
my $TextBox=$Slide->Shapes->AddTextbox({Orientation=>1,
Left=>25,
Top=>25,
Width=>550,
Height=>50,
});
$TextBox->TextFrame->TextRange->{Text} ="Big Ole Test";
$TextBox->TextFrame->TextRange->Font->{Color} = 255;
#- $TextBox->TextFrame->TextRange->Font->{Color} => ({RGB=>(Red=>86, Green=>55, Blue=>201)});
## Black
#- $TextBox->TextFrame->TextRange->Font->Color->RGB=>[255,255,255];
## Black
#- $TextBox->TextFrame->TextRange->Font->Color => [255,255,255];
## Black
#- $TextBox->TextFrame->TextRange->Font->Color->RGB => 'RGB(255,255,255)';
## Black
#- $TextBox->TextFrame->TextRange->Font->{Color}->{RGB}=>[255,255,255];
## Black
$Presentation ->SaveAs('<output-filename.ppt>');
答案 0 :(得分:0)
您必须传递VBA RGB
函数的值。 (Source)这是一个整数值,不是整数值数组或字符串。
RGB
函数的值可以通过一些简单的位操作轻松计算。 Red(r),Green(g)和Blue(b)组分的计算是:
(r) | (g << 8) | (b << 16)
其中|
是按位OR运算符,<<
是左移运算符。如果您不希望在不使用按位运算的情况下工作,也可以使用此计算:
r + (g * 256) + (b * 65536)