タダより高いモノは無い!? 一期3回 OpenOfficeの可能性を探れ!
2011.12.20
技術の小林です。
今回はOpenOffice(LibreOffice)にて、実際にセルやシートを扱う単純なマクロを検証してみることにしよう。
まずはExcelで元となるブックとマクロを作成する。
シート名「い」「ろ」「は」の3つのシートにそれぞれ20行、3列のデータを持たせ、
データの内容でその座標が解るようにする。
セルの表示形式はすべて文字列とする。
こんなシートを作って…
全選択、行選択、列選択などをマクロ化しテスト。
Sub SelectRows()
Dim sText As String
sText = InputBox("行選択(1-20):")
Rows(sText & ":" & sText).Select
End Sub
マクロを実行して…
18を入力すると…
こんな結果に(行選択)。
セルを選択するマクロの最終結果は次のように。
作成したExcelのブックをOpenOffice(LibreOffice)で開いて、
マクロを順に実行してみる(一応名称変更して、別名保存)。
(最初のマクロセレクターの読込がものっそい遅い気がする…)
(いちいち選択するのもちょっと階層が深いなあ…)
・開いているファイル名の取得
ThisWorkbook.Name
・開いているファイルのパスを取得
ThisWorkbook.Path
・現在のシート名
ActiveSheet.Name
正直、この中の一つくらいはエラーかなとも思ったんだけど。
うまくいくね。
続いて全選択、行選択など。
・全選択
Cells.Select
・行選択
sText = InputBox("行選択(1-20):")
Rows(sText & ":" & sText).Select
・列選択
sText = InputBox("列選択(A-C):")
Columns(sText & ":" & sText).Select
・セルの値を取得
sSheetName = InputBox("シート選択(い-は):")
iCntY = InputBox("Y入力(1-20):")
iCntX = InputBox("X入力(1-3):")
sText = Worksheets(sSheetName).Cells(iCntY, iCntX).Value
MsgBox ("シート:" & sSheetName & Chr(13) & "セル" & iCntY & "," & iCntX & "の値:" & sText)
おおお、全部ちゃんと動いた!!
という事は、同一ブック内のデータのやり取りは、ほぼ移行できるのかな?
(これ以外の操作をあまりしていないのでw)
成程、そのままで起こるエラーはシート内の最大使用行数を求めるコードや、
別ファイルを開いてのデータコピーなどだった気もする。
次回はそのあたりを追ってみよう。