Windows Server上で実行されるWinSSHDに対してsshを使用するWindows 2008 R2/perl 5.14.1 x64/Word 2010管理者アカウントへのリモートアクセス。このperlスクリプトは、(ローカル、管理者)コマンドラインから正常に動作:win32:WordへのOLE呼び出しは、SSHDを介してvisible = 0、リモートスクリプトでは動作しません。
C:\Users\Administrator>perl -w \winbat\ole_example.pl
>> Creating a new document
>> Creating a selection at insertion point
>> Insert text >> Save document
OLE exception from "Microsoft Word":Command failedWin32::OLE(0.1709) error 0x800a1066
in METHOD/PROPERTYGET "SaveAs" at \winbat\ole_example.pl line 34
任意のヒント:
use warnings;
use strict;
use Win32::OLE;
use Win32::OLE::Const 'Microsoft.Word'; # wd constants
use Win32::OLE::Const 'Microsoft Office 14.0 Object Library'; # mso constants
use Win32::OLE qw(in with);
my $word = CreateObject Win32::OLE 'Word.Application' or die $!;
$word->{'Visible'} = 0; # note, for debugging only; otherwise use 0
print ">> Creating a new document\n";
my $document = $word->Documents->Add;
with( $document->{BuiltinDocumentProperties},
Title => "OLE Word Perl",
Author => "Car Friedberg",
Subject => "simple example");
print ">> Creating a selection at insertion point\n";
# selection is the insertion point.
my $selection = $word->Selection;
print ">> Insert text \n";
$selection->TypeText("This is a test.");
$selection->TypeParagraph;
$selection->TypeText("End of test.");
print ">> Save document \n";
# save the document (works with Word 2010) (could use wdFormatPDF or wdFormatRTF)
$word->ActiveDocument->SaveAs({
FileName => 'exampletext.doc',
FileFormat => wdFormatDocument,
LockComments => msoFalse,
Password => "",
AddToRecentFiles => msoFalse,
WritePassword => "",
ReadOnlyRecommended => msoFalse,
EmbedTrueTypeFonts => msoFalse,
SaveNativePictureFormat => msoFalse,
SaveFormsData => msoFalse,
SaveAsAOCELetter => msoFalse});
$word->ActiveDocument->Close(wdDoNotSaveChanges);
$word->Quit();`
リモートシェルの出力は次のようになりますか?私は、{visible} = 0という単語を使用することに問題があることを知ります。これは、リモートで実行するように設定する必要があります。私が見つけた1つの記事は、アプリケーションアプリケーションという言葉を作成するためにMicrosoft Officeの完全な機能を使用することを提案しましたが、これをwin32 :: OLEが受け入れるもの、例えば に翻訳する方法を理解できませんでした。Microsoft.Office.Interop.Word.ApplicationClass createobject ( "Word.Application") (私は特定の提案を見つけることができませんでしたが、それはperlishではありませんでした)。
任意の助けてくれてありがとうは