こんにちは
今回はCalcのセルの読み取り・書き込みのマクロを作成しようと思います。
簡単なので、是非最後までお付き合いください。
セルの位置の仕組み、XY座標として覚える
まず、セルの位置の仕組みを覚えましょう。
学生の時の数学の授業で、グラフを描くときに、横はX軸、縦はY軸としていたのを覚えてますよね。表の行と列も同じように、横はX軸、縦はY軸と覚えて下さい。
セルのA1は(0,0)となります。B、C、と進むにつれて、B1⇒(1,0)、C1⇒(2,0)と左側の数字が増えていきます。そして、下方向では、A2⇒(0,1)、A3⇒(0,2)と右側の数字が増えていきます。
マクロを作成しよう
データを作成
まずはデータを準備します。”セル読み取り書き込み.ods”という名のファイルを作成しましょう。
そして、シート名を「データ1」、「データ2」とし、それぞれのA1のセルに「朝」、「夕」と入力しましょう。
マクロの準備
上部メニューで、「ツール」⇒「マクロ」⇒「マクロの管理」⇒「Basic」を選択して下さい。
Basicマクロのウインドウ(下の画像)が表示されます。開いているodsファイル(今回のファイル名は”セル読み取り書き込み.ods”)から「Standard」を選択し、「新規作成」をクリックして下さい。「新しいモジュール」のウインドウが開くので、「Module1」のままOKをクリックして下さい。これでプログラムを書き込める準備が出来ました。
セルを読み込みマクロ
Basicの画面では、下のように、「Sub Main」から「End Sub」まで空欄になっています。
この空欄にマクロを書いていきます。
まず、シート「データ1」のセル「A0」を読み取るマクロを作成します。
Sub Main
Dim oDoc As Object
Dim oSheet1 As Object
Dim datacell As String
oDOC = ThisComponent
oSheet1 = oDOC.Sheets.getByName("データ1")
datacell = oSheet1.getCellByPosition(0,0).String
Msgbox datacell
End Sub
3~5行目:変数の定義
最初の2行はオブジェクトを定義しています。
オブジェクトとは何かということになりますが、文字や数字以外の物と理解しておけばいいかと思います。
5行目は読み取ったセルを格納する文字変数の定義をしています。
7行目から9行目 ファイルのセルにアクセスする手順
oDOC = ThisComponent
これは”セル読み取り書き込み.ods”というファイルを「oDOC」という変数に格納しています。これで、プログラムがファイル本体にアクセスできる手段が出来ます。
oSheet1 = oDOC.Sheets.getByName("データ1")
そして、先に定義したファイルの「データ1」というシート名を「oSheet1」に格納します。これで、「データ1」というシートにアクセスする手段が出来ます。
datacell = oSheet1.getCellByPosition(0,0).String
「oSheet1.getCellByPosition(セルの位置).String」で、読み取るセルの位置を指定してデータを取得します。
先述した通り、A1は(0,0)になります。
A1のセルには文字列が入っているので、「String」と指定しますが、数字の場合、「value」になります。
'数字の場合
datacell = oSheet1.getCellByPosition(0,0).value
実行と読み取りの応用
Basicの画面で、三角の青マークをクリックするとマクロが実行されます。
実行すると、「朝」と表示されたメッセージボックスが表示されます。
「シート2」の「A0」のデータを読み取りたい時は、8行目のコードを「シート1」から「シート2」に変更すればいいだけです。
これで読み取りの方法はマスター出来ました。
セルに書き込むマクロ
読み込みマクロが出来れば、書き込みも簡単です。
下記のコードはシート”データ1″のA1のセルを、シート”データ2″のB2セルに書き込んでいます。
Sub Main
Dim oDoc As Object
Dim oSheet1 As Object
Dim oSheet2 As Object
oDOC = ThisComponent
oSheet1 = oDOC.Sheets.getByName("データ1")
oSheet2 = oDOC.Sheets.getByName("データ2")
oSheet2.getCellByPosition(1,1).String = oSheet1.getCellByPosition(0,0).String
End Sub
8,9行目 シートの定義
注意していただきたいのは、シート毎にオブジェクトを定義して下さい。
11行目
セルにそのまま代入すれば、セルに書き込みがされます。
実行
実行すると、シート”データ2″のB2のセルに、シート”データ1″のA1のセル「朝」が書き込まれたのがわかります。
まとめ
いかがだったでしょうか。
マクロでセルの読み書きの基本をマスターすることが出来ました。
今回は1つのセルの読み書きでしたが、別のシートのセルの読み書きもわかったので、色々と応用できると思います。
データ数が多いほど、マクロの魅力が増してきますので、是非、みなさんも試してください。
「役に立った!」と思れましたら、下のSNSボタンで記事のシェアをしていただけると嬉しいです!
コメント