スタッフブログ

タダより高いモノは無い!? 一期3回 OpenOfficeの可能性を探れ!

2011.12.20

技術の小林です。


今回はOpenOffice(LibreOffice)にて、実際にセルやシートを扱う単純なマクロを検証してみることにしよう。

まずはExcelで元となるブックとマクロを作成する。

シート名「い」「ろ」「は」の3つのシートにそれぞれ20行、3列のデータを持たせ、
データの内容でその座標が解るようにする。

セルの表示形式はすべて文字列とする。

koba_3_01.jpg

こんなシートを作って…

全選択、行選択、列選択などをマクロ化しテスト。

Sub SelectRows()
    Dim sText As String
    sText = InputBox("行選択(1-20):")
    Rows(sText & ":" & sText).Select
End Sub 

 マクロを実行して…

koba_3_02.jpg

18を入力すると…

koba_3_02b.jpg

こんな結果に(行選択)。

セルを選択するマクロの最終結果は次のように。

koba_3_03.jpg

 

作成したExcelのブックをOpenOffice(LibreOffice)で開いて、
マクロを順に実行してみる(一応名称変更して、別名保存)。

koba_3_05.jpg

koba_3_06.jpg

(最初のマクロセレクターの読込がものっそい遅い気がする…)
(いちいち選択するのもちょっと階層が深いなあ…)

 

・開いているファイル名の取得

ThisWorkbook.Name

koba_3_07.jpg

 

・開いているファイルのパスを取得

ThisWorkbook.Path

koba_3_08.jpg

 

・現在のシート名

ActiveSheet.Name

koba_3_09.jpg

正直、この中の一つくらいはエラーかなとも思ったんだけど。
うまくいくね。
 

続いて全選択、行選択など。

・全選択

Cells.Select

koba_3_10.jpg

 

・行選択

sText = InputBox("行選択(1-20):")
Rows(sText & ":" & sText).Select

koba_3_11.jpg

 

・列選択

sText = InputBox("列選択(A-C):")
Columns(sText & ":" & sText).Select

koba_3_12.jpg

 

・セルの値を取得

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)

koba_3_13.jpg

 

おおお、全部ちゃんと動いた!!

という事は、同一ブック内のデータのやり取りは、ほぼ移行できるのかな?
(これ以外の操作をあまりしていないのでw)

 

成程、そのままで起こるエラーはシート内の最大使用行数を求めるコードや、
別ファイルを開いてのデータコピーなどだった気もする。

 

次回はそのあたりを追ってみよう。

投稿者:技術部