OpenOffice calcのBasicマクロで,簡単に列をソートするサンプルコード
OOo Calcで,シート内の任意の列をソートするマクロのサンプルコード。
' 列をASCでソート Sub MySortAsc ' ソートを実行するシート番号と列番号 sheet_index = 0 column_index = 0 ' ソート範囲 sort_range = "B7:X561" ' ソート準備 Dim sort_info(1) As New com.sun.star.beans.PropertyValue Dim sort_fields(0) As New com.sun.star.util.SortField ' ソート範囲 oSheet = ThisComponent.Sheets( sheet_index ) oCellRange = oSheet.getCellRangeByName( sort_range ) ' 何番目の列をどういう優先順位でソートするか sort_fields(0).Field = column_index ' 列番号,0始まり sort_fields(0).SortAscending = True ' ASCかどうか sort_info(0).Name = "SortFields" sort_info(0).Value = sort_fields() ' range内に列のヘッダを含むかどうか sort_info(1).Name = "ContainsHeader" sort_info(1).Value = False ' 範囲を選択してソート実行 ThisComponent.getCurrentController().select( oCellRange ) oCellRange.sort( sort_info() ) End Sub
コードの説明
このマクロを実行すると,
指定したシートの指定した列をキーにして
指定した範囲がソートされる。
シート上にマクロ呼び出しのボタンを置いておけば,楽にソート実行できて便利だ。
マクロでソートするための参考資料:
OOoBasic/Calc/sort - ...?
http://hermione.s41.xrea.com/pukiwiki...
- セル範囲の内容の並べ替えを行うメソッドは sort です。
【解決しました】Calcで指定範囲をSORTするマクロ (トピック) • OpenOffice.org コミュニティーフォーラム
https://forum.openoffice.org/ja/forum...
- 指定範囲とSORT-Key列(できれば複数)を引数で渡せばSORTしてくれるプロシージャが、かなりの時間は掛かったけれど一応完成しました。
Andreas' Technical Tidbits: LibreOffice calc: automatically sort data upon data entry
http://ajhaupt.blogspot.jp/2013/08/li...
- The first macro 'SortRange' sorts a range by its second column in descending order using the first row as header i.e. not part of the actual sort. The macro gets a range object as parameter and thus could be used for any range.