2006年06月8日

[OOo] 表格製作的快速鍵巨集

同事在試用OpenOffice Writer時抱怨表格的製作比Word麻煩許多,例如手繪表格可以很方便且直覺的隨意畫出需要的表格,而Writer則必須較頻繁的用合併與分開儲存格,經由繁瑣的步驟才能完成表格。

經過分析,手繪表格最常使用到的狀況是:
  1. 把一格或鄰近的水平格由單列分割成兩列
  2. 把一格或鄰近的垂直格由單欄分割成兩欄
  3. 用橡皮筋擦按鈕把分隔線移除,使兩格變成一格
而這兩種狀況應該可以利用巨集做成用功能鍵就能完成的動作,例如:
  1. 游標停在某個儲存格裡按Ctrl+H,則一格變成上、下兩格(水平分割)
  2. 游標停在某個儲存格裡按Ctrl+K,則一格變成左、右兩格(垂直分割)
  3. 標示需要合併的儲存格後按Ctrk+M,則數格變成一格
透過巨集的錄製,再加上「合併儲存格」與「分開儲存格」兩個按鈕來達成上述需求;最後完成的程式如下:

CellSplitHorz 水平分割
sub CellSplitHorz
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Amount"
args1(0).Value = 2
args1(1).Name = "Horizontal"
args1(1).Value = true
args1(2).Name = "Proportional"
args1(2).Value = true

dispatcher.executeDispatch(document, ".uno:SplitCell", "", 0, args1())

end sub

CellSplitVertical 垂直分割
REM  *****  BASIC  *****


sub CellSplitVertical
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Amount"
args1(0).Value = 2
args1(1).Name = "Horizontal"
args1(1).Value = false
args1(2).Name = "Proportional"
args1(2).Value = false

dispatcher.executeDispatch(document, ".uno:SplitCell", "", 0, args1())

end sub

CellMerge 儲存格合併
REM  *****  BASIC  *****

sub CellMerge
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:MergeCells", "", 0, Array())

end sub

巨集製作完畢後,再用【工具→自訂→鍵盤】,在下方的【功能→範圍】裡找到OpenOffice.org巨集,將製作好的巨集變更給要使用的功能鍵。

雖然Writer目前並無手繪表格的功能,但透過功能鍵應該也能更快速的製作較複雜的表格了。

##


 

Posted by emisjerry at 樂多Roodo! │22:56 │OpenOffice.org試用手記
樂多分類:網路/3C 共同主題:Utilities/Tools 工具:編輯本文
Ads by Roodo!