文書更新:2019年06月18日(火) 午前10時38分56秒

Home > 備忘録 > libreoffice の macro(basic) > python を呼び出す( 98 )

python を呼び出す

  1. Macro 部
  2. aa.py の demo2 関数を呼びだす。
    sub Demo
    	Dim a(2),b(0),c(0) As Variant
    	Dim objSheet as Object
    	objSheet=ThisComponent.CurrentController.Activesheet
    	scpr=ThisComponent.getScriptProvider
    	scmod=scpr.getScript("vnd.sun.star.script:aa.py$demo2?language=Python&location=user")
    	'aに引数を与える
    	a(0)=2015		'数値
    	a(1)="青森"		'文字列
    	a(2)="aaaaaaa"	'文字列
    	'b,cについては勉強不足で分かりません
    	ret=scmod.invoke(a,b,c)
    End Sub
  3. Python 部
  4. フォルダ(/home/ユーザー名/.config/libreoffice/4/user/Scripts/python)が存在しなければ作成すること。
    /home/ユーザー名/.config/libreoffice/4/user/Scripts/python/aa.py
    #coding: utf-8
    import uno
    
    def demo2(*args):
    	doc=XSCRIPTCONTEXT.getDocument()
    	sheet=doc.CurrentController.getActiveSheet()
    	#args[0]=2015,args[1]="青森",args[2]="aaaaaaa"が返ってくる
    	sheet.getCellRangeByName("AB1").Value=args[0]	#数値
    	sheet.getCellRangeByName("AC2").String=args[1]	#文字列
    	sheet.getCellByPosition(0,5).String=args[2]		#文字列
    	#文字位置の指定
    	sheet.getCellByPosition(0,5).HoriJustify=uno.Enum('com.sun.star.table.CellHoriJustify','CENTER')	#水平:STANDARD,LEFT,CENTER,RIGHT
    	sheet.getCellByPosition(0,5).VertJustify=uno.Enum('com.sun.star.table.CellVertJustify','TOP')		#垂直:STANDARD,TOP,CENTER,BOTTOM
    	#文字サイズを指定
    	sheet.getCellRangeByName("AB1").CharHeight=14
    	sheet.getCellRangeByName("AC2").CharHeightAsian=12