pepoとネットワークを語ろう

40年前からこれまでとこれからのネットワークを語る

くじらのだんな、OpenOffice Portable calcのマクロで画像貼り付けに挑戦!

2011-05-25 09:04:00 | パソコンよもやまばなし

openofficeがあるのは随分前から知っていたが、MSofficeで充分なのでダウンロードも使った事も無かったわ

たまたま、MSofficeがインストールされていない制御用のWindowsXP搭載のPCに遭遇してから

USB起動で画面プリントが連続的に取れるAPをとgoogle様へお願いしたら

openoffice portable へ巡り合った・・・USBで起動できるんやんか

でもって、連続技openofficeのマクロに今回は挑戦やー!

Excelのマクロは何回か作った事があるが、とは言ってもopenofficeのマクロは中々良い情報には巡り合わんけど

以下のサイト情報を貼り合わせて、OpenOffice Calc Portableのマクロが何とか出来たわm(__)m

http://www.geocities.co.jp/SiliconValley-SantaClara/1183/computer/programming/OOo_basic.html 

http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide 

http://itref.fc2web.com/openoffice/basic/index.html 

シートの追加→クリップボードからの貼り付け→画像サイズの変更の連続技がこれだ

REM  *****  20110524 kujiranodanna wrote  *****
sub Main
    Dim oDocument As Object
 Dim oSheet As Object
 Dim sName As String
 dim document   as object
    dim dispatcher as object
    dim args1(1) as new com.sun.star.beans.PropertyValue
 document   = ThisComponent.CurrentController.Frame
    dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 oDocument = ThisComponent
 sName = "newsheet" & oDocument.Sheets.getCount()+1
    args1(0).Name = "Name"
    args1(0).Value = sName
    args1(1).Name = "Index"
    args1(1).Value = 1
    dispatcher.executeDispatch(document, ".uno:Insert", "", 0, args1())
 oSheet = ThisComponent.Sheets.getByName(sName)
 oCell = oSheet.getCellRangeByName("A1")
 ThisComponent.CurrentController.ActiveSheet
    dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
   
 rem ***** resize *****
    dim Sheet as Object
    dim pSheet as Object
    dim picture as Object
    dim pictureResize as new com.sun.star.awt.Size
    Sheet = ThisComponent.CurrentController.ActiveSheet
    pSheet = Sheet.getDrawPage
    picture = pSheet.getByIndex( pSheet.getCount - 1 )
     with pictureResize
       .Width =  picture.Size.Width * 0.75
       .Height =  picture.Size.Height * 0.75
    end with
    picture.setSize(pictureResize)
   
rem ***** return to sheet1 *****
    ThisComponent.CurrentController.ActiveSheet = ThisComponent.Sheets.getByName("Sheet1")
    args1(0).Name = "ToPoint"
    args1(0).Value = "$A$1"
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

end sub

Sheet1の適当な画像にマクロを登録しておき、画像ボタンを押すたび

Sheet1の左端にnewsheet2、newsheet3・・・newsheetNが追加

追加されたnewsheetNへクリップボードの画像が貼られ

サイズが75%に縮小され

Sheet1へ戻る

OpenOffice Calc Portableの操作等やマクロのボタンへの登録は割愛よん

これ結構いいがな

pepoと


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。