SSブログ

LIbreofficeCalcBasic シートに複数の画像を挿入、位置の保護するマクロの実験 [LibreOffice Calc Basic]

LIbreofficeCalcBasic シートに複数の画像を挿入、移動位置の保護するマクロの実験

訂正 移動 NG → 位置 

ここのところ実験してきたマクロで初期の目的、複数の画像を挿入しファイル名を表示し移動位置を保護する マクロが完成した。

LibreofficeCalcMRIsetString4.png

 

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")
'oLayerManager = ThisComponent.LayerManager()
'----------------------------------------------------------------------------------------------------   
'選択範囲のサイズ、位置
    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))
            'URLからファイル名を取り出す
                oURL=oFilePicker.selectedFiles(i)
                len_URL=Len(oURL)
                    For j=len_URL To 1 Step -1
                        a=mid(oURL,j,1)
                        If a="/" Then
                            oURL=right(oURL,len_URL-j)
                    'Print oURL
                        J=1
                        End If
                    Next j
           
'-------------------------------------------------------------------------------------------------------------------
    '画像の挿入

            celHeight=452        '画像間隔 標準cell高さ
            aSize.Width = sW
            aSize.Height = sH
            aPos.X = pX
            aPos.Y = pY+(sH+celHeight)*i
            shape.Size = aSize
            shape.Position = aPos
            'Shape.LayerId = 1    '最背面に設定
            drawpage.add(shape)
            '文字の挿入
                'shape.setString("No." + (i+1))
                shape.setString(oURL)
                shape.CharColor=RGB(120,120,120)
                'shape.CharBackColor=RGB(255,255,255)
                shape.CharShadowed=true
    '追記
            '文字垂直方向位置 0=top  1=center   2=bottom
                shape.TextVerticalAdjust=2
                '文字水平方向位置    0=left   1=center   2=right
                shape.TextHorizontalAdjust=2
                '下からの位置 単位100分の1ミリメートル
                shape.TextLowerDistance =300
                '右からの位置
                shape.TextRightDistance =300
               
            '移動保護
                shape.MoveProtect=true

               
            '移動位置の保護
                shape.MoveProtect=true
       
        Next i
 
End Sub

 

 

LibreofficeCalcMRIsetString5.png

LibreofficeCalcMRIsetString6.png

 


nice!(1)  コメント(0)  トラックバック(0) 

nice! 1

コメント 0

コメントを書く

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

トラックバック 0


Linuxランキング

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