** [[OOobbs3/56]] [#na123a1c] -''サマリ'': マクロで自動的に作成したドキュメントにマクロを持たせる -''環境'': Calc -''状態'': 解決 -''投稿者'': [[saka]] -''投稿日'': 2011-07-04 (月) 13:54:34 *** 質問 [#na93b7ab] 初めまして。よろしくお願いします。 マクロによって新たに作成されたドキュメントに、自動的にマクロを持たせることは可能でしょうか。 例としてa.odsのマクロでb.odsという新たなドキュメントを作成し そのb.odsが既にマクロを持っている状態にできるのでしょうか? ということです。 以上、宜しくお願い致します。 *** 回答 [#v4de96fe] - 次のようにすれば可能です。 Sub Cdre aArg = CreateUnoStruct("com.sun.star.beans.PropertyValue") aArg.Name = "MacroExecutionMode" aArg.Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE oDoc = StarDesktop().loadComponentFromURL("private:factory/scalc", "_blank", 0, Array(aArg)) SaveToModule(oDoc, "NewLib", "Module1", "Sub hello" & chr(10) & " msgbox ""hello""" & chr(10) & "End Sub") End Sub Sub SaveToModule(oDoc As Object, sLocLibName As String, sLocModule As String, sLocSaveLine As String) Dim oBasicLib As Object, oLib As Object oBasicLib = oDoc.BasicLibraries If NOT oBasicLib.hasByName( sLocLibName ) Then oBasicLib.createLibrary(sLocLibName) End If If NOT oBasicLib.isLibraryPasswordProtected( sLocLibName ) Then If NOT oBasicLib.isLibraryReadOnly( sLocLibName ) Then oLib = oBasicLib.getByName( sLocLibName ) If oLib.hasByName( sLocModule ) Then oLib.removeByName( sLocModule ) oLib.insertByName( sLocModule, sLocSaveLine ) Else oLib.insertByName( sLocModule, sLocSaveLine ) End If Else MsgBox "This library is readonly!", 0, "Save Error" End If Else MsgBox "This library is password prtected!", 0, "Save Error" End If End Sub -- はにゃ? &new{2011-07-04 (月) 18:16:00}; - ありがとうございました。上記サンプルを加工してうまくいきました。 -- saka &new{2011-07-05 (火) 11:40:34}; #comment *** 感想,コメント,メモ [#c5a31a98] #comment |