目次

趣旨

とりあえず必要かと思う情報をまとめ中

ファイル操作関連

ファイルおよびディレクトリ (OpenOffice.org 実行時ライブラリ)

参考URL

http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Files_and_Directories_(Runtime_Library)

記事内容

ファイル選択ダイアログを開き、選択された画像を挿入する

参考URL

http://kaede.blog.abk.nu/&category?cat=%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0::OOo%20Basic

概要

メニュー「挿入 - 画像 - ファイルから」に相当するマクロ

コード

sub insertPicture
   dim document as Object
   dim dispather as Object

   ' get access to the document
   document = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

   ' ファイル選択ダイアログの初期化
   dim filePickerDlg as Object
   filePickerDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker")
   filePickerDlg.appendFilter( _
       "JPEG画像ファイル(*.jpg, *.jpeg)", "*.jpg", "*.jpeg")

   if filePickerDlg.execute = 1 then
       'ファイルが指定された場合

       dim selFiles() as String
       selFiles() = filePickerDlg.getFiles()

       dim picInfo(2) as new com.sun.star.beans.PropertyValue
       picInfo(0).Name = "FileName"
       picInfo(0).Value = selFiles(0)
       picInfo(1).Name = "FilterName"
       picInfo(1).Value = "JPEG - Joint Photograhpic Experts Group"
       picInfo(2).Name = "AsLink"
       picInfo(2).Value = false

       'ダイアログで指定された画像をアクティブセルへ挿入
       dispatcher.executeDispatch(document, ".uno:InsertGraphic", _
            "", 0, picInfo())
   end if
end sub

図形のサイズを変える

参考URL

http://kaede.blog.abk.nu/&category?cat=%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0::OOo%20Basic

コード

目的

別記事「[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する」にて挿入した画像を、アスペクト比を保ちながらサイズの変更を行う。 上記の別記事中のマクロに続いて処理を実行させる場合、挿入された画像のDrawPage?オブジェクトのインデックスは、対象シート中のDrawPage?オブジェクトの中で最大となる。このため、処理対象画像の選択はインデックスにて判定(最大のインデックス値を持つ画像を対象)を行っている。

コード本体

const MAX_WIDTH as Integer = 10000 ' 10cm
const MAX_HEIGHT as Integer = 10000

sub resizePicture

   dim sheet as Object
   dim drawPg as Object
   dim draw as Object

   sheet = ThisComponent.CurrentController.ActiveSheet
   drawPg = sheet.getDrawPage
   
   if drawPg.getCount > 0 then
       'インデックスが最大のオブジェクトを対象とする
       draw = drawPg.getByIndex( drawPg.getCount - 1 )
   else
       exit sub
   end if

   dim scale as double
   dim drawResize as new com.sun.star.awt.Size

   '拡大率を求める
   if draw.Size.Width > draw.Size.Height then
       '横長の場合
       scale = MAX_WIDTH / draw.Size.Width
   else
       '縦長の場合
       scale = MAX_HEIGHT / draw.Size.Height
   end if

   with drawResize
       .Width = draw.Size.Width * scale
       .Height = draw.Size.Height * scale
   end with

   draw.setSize(drawResize)
end sub

情報検索リンク

http://www.oooforum.org/forum/search.phtml

図形描画ドキュメントの構造

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

OOoBasic?でつくるマクロのカケラ (作成中)

URL

http://oooug.jp/compati/basic/pukiwiki.php?%A5%DE%A5%AF%A5%ED%A4%CE%A5%AB%A5%B1%A5%E9

内容

同じ内容のページを目的から検索するマクロのサンプルに一覧にしてあります。

OpenOffice/Calcでエクセルの様に日付、時刻を自動入力するマクロ

http://zze128.blog9.fc2.com/blog-entry-175.html

Macでキャプチャした画像を貼付けるまで

参考URL

http://www.tohoho-web.com/lng/199911/99110324.htm

MACの場合はシフトキー+コマンド+4の同時押しで

バッテンカーソルが出るので取り込みたい画面を

ドラッグすればハードディスクにSimpletextのPICT画像として

保存されます。

普通にダブルクリックすれば Simpletextで開けますし

編集したければフォトショップでも何でもで開いて下さい。

一応Macにはキャプチャソフトとして

Jingというのがある

Jing

URL

http://www.techsmith.com/download/jing/thankyou.asp?type=mac

「選択中の結合セルからサイズを取得する方法」

セルカーソルというものを使うことでOOoBasic?で実現できるようです。

'-------------------------------------------
Sub mergedArea_Size 
Dim oSheet As Object
Dim oCursor As Object
Dim oSelection As Object
oSheet =ThisComponent.CurrentController.ActiveSheet
oSelection = ThisComponent.CurrentSelection
oCursor = oSheet.createCursorByRange( oSelection )
oCursor.collapseToMergedArea()
Dim w_len As Long
Dim h_len As Long
w_len = oCursor.Size.Width
h_len = oCursor.Size.Height
MsgBox "Width:" & w_len & " Height:" & h_len
End Sub
'-------------------------------------------

参考URL

http://oshiete.goo.ne.jp/qa/5720685.html

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS