OpenOffice.org Calc で選択範囲に合わせた×を直線で追加するマクロ
7月 4th, 2009
みようみまねで OpenOffice.org Calc で
選択範囲に合わせた×を直線で追加するマクロをかいてみた。
いらない子には×を与えよう。
'選択範囲に合わせた×を直線で追加する '本家 http://docs.sun.com/app/docs/doc/819-1332/faaim?a=view sub DrawX '範囲の取得 dim oDoc as object dim oRange as object oDoc = StarDesktop.CurrentComponent 'このコードを実行しているドキュメントを返す oRange = oDoc.CurrentSelection if not oRange.supportsService("com.sun.star.sheet.SheetCellRange") then exit sub '直線の作成 dim margin as long dim aPoint as new com.sun.star.awt.Point dim aSize as new com.sun.star.awt.Size dim oRD as object dim oRU as object margin = 20 '左上→右下 with oRange aPoint.X = .Position.X + margin aPoint.Y = .Position.Y + margin aSize.Width = .Size.Width - 2 * margin aSize.Height = .Size.Height - 2 * margin end with oRD = oDoc.createInstance("com.sun.star.drawing.LineShape") oRD.setPosition(aPoint) oRD.setSize(aSize) '左下→右上 with oRange aPoint.X = .Position.X + margin aPoint.Y = .Position.Y + .Size.Height - margin aSize.Width = .Size.Width - 2 * margin aSize.Height = -(.Size.Height - 2 * margin) end with oRU = oDoc.createInstance("com.sun.star.drawing.LineShape") oRU.setPosition(aPoint) oRU.setSize(aSize) 'ページに追加 dim oSheet as object dim oPage as object oSheet = oDoc.CurrentController.ActiveSheet oPage = oSheet.DrawPage oPage.add(oRD) oPage.add(oRU) 'グループ化 dim oShapes as object dim oGroup as object oShapes = createUnoService("com.sun.star.drawing.ShapeCollection") oShapes.add(oRD) oShapes.add(oRU) oGroup = oPage.group(oShapes) end sub