Top > OOobbs3 > 56

OOobbs3/56 Edit

  • サマリ: マクロで自動的に作成したドキュメントにマクロを持たせる
  • 環境: Calc
  • 状態: 解決
  • 投稿者: saka?
  • 投稿日: 2011-07-04 (月) 13:54:34

質問 Edit

初めまして。よろしくお願いします。 マクロによって新たに作成されたドキュメントに、自動的にマクロを持たせることは可能でしょうか。 例としてa.odsのマクロでb.odsという新たなドキュメントを作成し そのb.odsが既にマクロを持っている状態にできるのでしょうか? ということです。 以上、宜しくお願い致します。

回答 Edit

  • 次のようにすれば可能です。
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
  • はにゃ? 2011-07-04 (月) 18:16:00
  • ありがとうございました。上記サンプルを加工してうまくいきました。 -- saka 2011-07-05 (火) 11:40:34

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes