OpenOfficeのVersionをあげたところうまく動作しなくなりました。
下位Versionの動作保証が出来ていないのかと思い、
OpenOfficeのVersionを下げて検証してみようとしているのですが、
今度はOpenOfficeのファイルが開けない状態になってしまいました。
原因がつかめておらず、
また、マクロにて一括編集が行えないと修正するのに手間がかかるため、
なにか解決策がないかと思い、トピックを投稿させていただきました。
<質問>
1.カスタムプロパティをマクロで書き換える動作は、VersionUpにて保証されていない動作になるのでしょうか。
少なくとも下記Versionでは正しく動作していました。
<Version>
WndowsXP Professional Version2002 Service Pack3
OpenOffice.org 3.0.0 OOO300m9 Build:9358
下記Versionではカスタムプロパティの変更がうまく動作しません。
<Version>
WndowsXP Professional Version2002 Service Pack3
OpenOffice.org 3.2.1 OOO320m18 Build:9502又は、
OpenOffice.org 3.1.1 OOO310m19 Build:9420
2.OpenOfficeのVersionを下げる際、なにか注意するところはあるのでしょうか。
「プログラムの追加と削除」より削除を行い、下記HPよりファイルを取得してインストールを行っています。
http://archive.services.openoffice.org/ ... alized/ja/
バッチより実行しているマクロは下記になります。
test1~4の値部分が正しく更新されません。
コード: 全て選択
sub Main ( cFile )
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
rem document = ThisComponent.CurrentController.Frame
cURL = ConvertToURL( cFile )
' Open the document. Just blindly assume that the document
' is of a type that OOo will correctly recognize and open
' without specifying an import filter.
document = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", False ),))
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oUrl = FileNameOutOfPath(cFile)
oUrl = Left( oUrl , Len( oUrl ) - 4 )
dim args16(17) as new com.sun.star.beans.PropertyValue
args16(0).Name = "Properties.UseUserData"
args16(0).Value = true
args16(1).Name = "Properties.DeleteUserData"
args16(1).Value = false
args16(2).Name = "Properties.Title"
args16(2).Value = oUrl
args16(3).Name = "Properties.Subject"
args16(3).Value = ""
args16(4).Name = "Properties.KeyWords"
args16(4).Value = ""
args16(5).Name = "Properties.Description"
args16(5).Value = ""
args16(6).Name = "Properties.AutoReload"
args16(6).Value = false
args16(7).Name = "Properties.AutoReloadTime"
args16(7).Value = 0
args16(8).Name = "Properties.AutoReloadURL"
args16(8).Value = ""
args16(9).Name = "Properties.AutoReloadFrame"
args16(9).Value = ""
args16(10).Name = "Properties.Field1Title"
args16(10).Value = "test1"
args16(11).Name = "Properties.Field2Title"
args16(11).Value = "test2"
args16(12).Name = "Properties.Field3Title"
args16(12).Value = "test3"
args16(13).Name = "Properties.Field4Title"
args16(13).Value = "test4"
args16(14).Name = "Properties.Field1"
args16(14).Value = "1"
args16(15).Name = "Properties.Field2"
args16(15).Value = "2"
args16(16).Name = "Properties.Field3"
args16(16).Value = "3"
args16(17).Name = "Properties.Field4"
args16(17).Value = "4"
dispatcher.executeDispatch(document.getCurrentController().getFrame(), ".uno:SetDocumentProperties", "", 0, args16())
rem 保存----------------------------------------------------------------------
dispatcher.executeDispatch(document.getCurrentController().getFrame(), ".uno:Save", "", 0, Array())
rem PDF出力-----------------------------------------------
SaveAsPDF( cFile )
document.close(True)
end sub
' Save document as an Acrobat PDF file.
Sub SaveAsPDF( cFile )
cURL = ConvertToURL( cFile )
' Open the document. Just blindly assume that the document
' is of a type that OOo will correctly recognize and open
' without specifying an import filter.
oDoc = StarDesktop.loadComponentFromURL( cURL, "_blank", 0, _
Array(MakePropertyValue( "Hidden", True ),))
cFile = Left( cFile, Len( cFile ) - 4 ) + ".pdf"
cURL = ConvertToURL( cFile )
' Save the document using a filter.
oDoc.storeToURL( cURL, Array(_
MakePropertyValue( "FilterName", "writer_pdf_Export" ),)
oDoc.close( True )
End Sub
Function MakePropertyValue( Optional cName As String, Optional uValue ) _
As com.sun.star.beans.PropertyValue
Dim oPropertyValue As New com.sun.star.beans.PropertyValue
If Not IsMissing( cName ) Then
oPropertyValue.Name = cName
EndIf
If Not IsMissing( uValue ) Then
oPropertyValue.Value = uValue
EndIf
MakePropertyValue() = oPropertyValue
End Function
よろしくお願いします。