- 追加された行はこの色です。
- 削除された行はこの色です。
*目次 [#ma3953e9]
#contents
*趣旨 [#rab278c5]
とりあえず必要かと思う情報をまとめ中
*ファイル操作関連 [#ub432519]
ファイルおよびディレクトリ (OpenOffice.org 実行時ライブラリ)
**参考URL [#o27ff08f]
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Files_and_Directories_(Runtime_Library)
**記事内容 [#sd949243]
-ディレクトリ内のファイル検索
-ディレクトリの作成および削除
-ファイルのコピー、名前変更、削除および存在確認
-ファイル属性の読み取りと変更 最終変更日時、ファイルサイズなどのファイル属性
-テキストファイルへの書き込み
-テキストファイルの読み取り
*ファイル選択ダイアログを開き、選択された画像を挿入する [#zb2cbd05]
**参考URL [#a728c86e]
http://kaede.blog.abk.nu/&category?cat=%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0::OOo%20Basic
**概要 [#i0a81e21]
メニュー「挿入 - 画像 - ファイルから」に相当するマクロ
**コード [#u686e363]
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
*図形のサイズを変える [#nee10b6f]
**参考URL [#pa1602a6]
http://kaede.blog.abk.nu/&category?cat=%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0::OOo%20Basic
**コード [#oc978a0b]
***目的 [#e87f41e3]
別記事「[Calc] ファイル選択ダイアログを開き、選択された画像を挿入する」にて挿入した画像を、アスペクト比を保ちながらサイズの変更を行う。
上記の別記事中のマクロに続いて処理を実行させる場合、挿入された画像のDrawPageオブジェクトのインデックスは、対象シート中のDrawPageオブジェクトの中で最大となる。このため、処理対象画像の選択はインデックスにて判定(最大のインデックス値を持つ画像を対象)を行っている。
***コード本体 [#id100346]
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
*情報検索リンク [#f064c825]
http://www.oooforum.org/forum/search.phtml
*図形描画ドキュメントの構造 [#m4e80213]
http://wiki.services.openoffice.org/wiki/JA/Documentation/BASIC_Guide/Structure_of_Drawings
*OOoBasicでつくるマクロのカケラ (作成中) [#k3a573db]
**URL [#lbd8067a]
http://oooug.jp/compati/basic/pukiwiki.php?%A5%DE%A5%AF%A5%ED%A4%CE%A5%AB%A5%B1%A5%E9
**内容 [#m540225a]
同じ内容のページを目的から検索するマクロのサンプルに一覧にしてあります。
-基本の基本
-記録マクロ
-新しいドキュメントを作成する
-指定のファイルを開く
-開いているドキュメントのファイル名をリストアップする
-ファイルを閉じる/変更を保存して閉じる
-LBound関数とUBound関数を使ってもれなくループする
-Len関数を使って文字列の長さに応じて処理を分岐する
-文字列が日付として認識できるかどうかを調べる
-いろいろなタイプの数値データを入力する
-いろいろな文字データをセルに入力する
-どのようなデータを数値と判断するか
-選択範囲の列全体を取得し、列番号を表示する
-関数を使って列番号を表示する
-行列の表示/非表示
-1秒ごとの処理を10秒間実行する
-指定時間10秒でループを抜ける
-8個の配列要素から4個を順番に取り出す
-多重ループを使ったソート(バブルソート)
-単一セルのアドレスを表示(エラーハンドラ)
-選択したセル範囲のアドレスを表示する
-新しいシートを追加して名前をつける
-シートの追加と削除
-ユーザー定義型変数
-マクロの中でシート関数を使う
-画面の書き換えをストップする
-ダイアログの操作
-リストボックスからアイテムを選択する
-セルデータをリストボックスに表示する
-イベント駆動型マクロ
-イベント駆動型マクロ
-シートを切り替えたときにコードを実行する
-ダブルクリックしたときにコードを実行する
-右クリックでマウスカーソルの位置を表示する
-オブジェクトの操作
-ワークシート上のフォーム(ボタン)を取得する
*OpenOffice/Calcでエクセルの様に日付、時刻を自動入力するマクロ [#qff66df5]
http://zze128.blog9.fc2.com/blog-entry-175.html
*Macでキャプチャした画像を貼付けるまで [#z9319136]
**参考URL [#hd06ab03]
http://www.tohoho-web.com/lng/199911/99110324.htm
>MACの場合はシフトキー+コマンド+4の同時押しで
>バッテンカーソルが出るので取り込みたい画面を
>ドラッグすればハードディスクにSimpletextのPICT画像として
>保存されます。
>普通にダブルクリックすれば Simpletextで開けますし
>編集したければフォトショップでも何でもで開いて下さい。
一応Macにはキャプチャソフトとして
Jingというのがある
**Jing [#yd3d2d99]
***URL [#f2b5c3c5]
http://www.techsmith.com/download/jing/thankyou.asp?type=mac
*「選択中の結合セルからサイズを取得する方法」 [#ca10813e]
セルカーソルというものを使うことで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 [#d6f786ea]
http://oshiete.goo.ne.jp/qa/5720685.html