SSブログ

LibreOffice CalcBasic シートに複数の画像を挿入するマクロの実験 [LibreOffice Calc Basic]

 

LibreOffice CalcBasic シートに複数の画像を挿入するマクロの実験

libreofficeCalcPicsInsert.png

始めに画像を書き込む範囲を選択する(画像1個分)

Sub PicS_insert_draw()
'ファイル選択ダイアログで複数の画像ファイルを選択して、シートに書き込む
    Dim aSize as new com.sun.star.awt.Size
    Dim aPos as new com.sun.star.awt.Point
'        drawpage =  ThisComponent.CurrentController.activesheet.getDrawPage()
'        shape = ThisComponent.createInstance("com.sun.star.drawing.GraphicObjectShape")
'----------------------------------------------------------------------------------------------------   
'選択範囲のサイズ、位置
    With ThisComponent.CurrentController.selection
          pX=    .Position.X
         pY=.Position.Y
        sH=.Size.Height
         sW=.Size.Width
     End With
'-----------------------------------------------------------------------------------------------------
'FilePickerで複数画像URL取得
 ' ファイル選択ダイアログ 初期化
            oFilePicker = createUnoService("com.sun.star.ui.dialogs.FilePicker")
        '複数選択モードTrue
        'setMultiSelectionMode(False) →.getFiles()
        'setMultiSelectionMode(True) →selectedFiles()
            oFilePicker.setMultiSelectionMode(True)
        'フィルター 画像ファイル
            oFilePicker.appendFilter("画像ファイル","*.jpg;*.jpeg;*.png;*.gif;*.bmp")
        '表示ディレクトリ
            sDir = "file:///home/telstar/ピクチャ"
            oFilePicker.setDisplayDirectory(sDir)
    '画像選択ダイアログ表示          
            fpd=oFilePicker.execute
        'ファイルが選択されたか? fpd=1 選択された、fpd<>1キャンセルされた
                if fpd <> 1 then
                    Exit Sub
                end if
  
    'ファイルURL取得
        For i=0 to Ubound(oFilePicker.selectedFiles())
           '選択画像をDrawPageにインサートするための設定 Loop内で
            'Loop外で設定すると連続画像挿入がうまく出来無い   
                drawpage =  ThisComponent.CurrentController.activesheet.getDrawPage()
                shape = ThisComponent.createInstance("com.sun.star.drawing.GraphicObjectShape")
            'ConvertToURLでfile://を取り除く  システムファイル名をファイルURLへ変換
                shape.GraphicURL = ConvertToURL(oFilePicker.selectedFiles(i))
'-------------------------------------------------------------------------------------------------------------------
    '画像の挿入
            celHeight=452        '画像間隔 標準cell高さ
            aSize.Width = sW
            aSize.Height = sH
            aPos.X = pX
            aPos.Y = pY+(sH+celHeight)*i
            shape.Size = aSize
            shape.Position = aPos
            drawpage.add(shape)
        Next i
 
End Sub

 

 

libreofficeCalcPicsInsert1.png

 


nice!(10)  コメント(1)  トラックバック(1) 
共通テーマ:パソコン・インターネット

nice! 10

コメント 1

SWADWAY

Cialis Generika Per Vorkasse tynckivy https://acialisd.com/# - cheap cialis online Pathsace comprar cialis generico foro Issuelegem <a href=https://acialisd.com/#>buy cialis online 20mg</a> stoosyhoodia Amex Duo Amoxicillin
by SWADWAY (2020-07-11 10:56) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1


Linuxランキング

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。