【LibreOffice Calc】LibreOffice CalcでVBAでシートとブックの操作する方法【初心者向け】

LibreOffice CalcでVBAでシートとブックの操作する

LibreOffice Calcとは?

LibreOfficeは、The Document Foundationが支援する自由・オープンソースのオフィスソフトです。

ワープロ、表計算、プレゼンテーション、データベース、数式エディタの5つのアプリケーションで構成されています。 

Microsoft Officeと互換性があります。

LibreOfficeの表計算ソフト…Excelに該当するのが、LibreOffice Calcです。

LibreOffice CalcはVBAで自動化でき、業務を効率化できる

ExcelというとVBAでプログラムをして自動化して業務を効率化することが出来ます。

では、LibreOffice Calcでプログラムをして自動化して業務を効率化する、どのように行えばいいのか?、分からないという方は多いのではないでしょうか?

LibreOffice Calcでプログラムをして自動化して業務を効率化する…その情報が非常に日本語で説明されているものが少なく、また見つけたとしても、これを覚えるのが大変だったりします。

しかし、それを解決する方法があります。

LibreOfficeでVBAを使うのです。

実はLibreOffice Calcは、VBAを使用することが出来ます。

VBAならたくさんの情報があります。

今回のブログ記事では、そのLibreOffice CalcでVBAでシートとブックの操作する方法について今回ご紹介します。

なお今回、Windowsを使用しましたが、Linuxでも使用できることを確認しました。

LibreOfficeを使われる方はLinuxユーザーが多いと思いますので、ぜひともLibreOfficeでVBAを使用していただきたいと思っています。

LibreOffice CalcでVBAでシートとブックの操作する方法

LibreOffice Calcのオブジェクトの階層

LibreOffice Calcのオブジェクトはこのように階層になっています。

Range(A1)は、セルA1を表しています。

Sheets(“Sheet1”).Range(A1)は、シート2のセルA1を表しています。

Workbooks(“Book1”).Sheets(“Sheet1”).Range(A1)は、Book1のSheet1のセルA1を表しています。

この構造を理解すれば、別のブックやシートのセルを指定することが出来ます。

Sheet2のセルA1を指定する場合は、LibreOffice CalcのVBAのコードでは以下のように記述します。

Sheets(“Sheet2”).Range(“A1”)

又は、Sheet2は左から2番めにあるので、こういう記述も出来ます。

Sheets(2).Range(“A1”)

LibreOffice CalcのVBAでシートを指定する具体例① Sheet2のセルA1に10と入力する

実際にLibreOffice CalcのVBAでSheet2のセルA1に10と入力してみます。

以下のコードを入力します。

Option VBASupport 1
REM  *****  BASIC  *****

Sub Select_sheet
	Sheets("Sheet2").Range("A1").Value = 10
End Sub

Sheet1を選択した状態で、F5キーを押します。

すると以下のようにSheet2のセルA1に10が入力されます。

LibreOffice CalcのVBAでシートを指定する具体例② LibreOffice CalcのVBAで別のブックであるBook1のSheet1のセルA1に300と入力する

LibreOffice CalcのVBAで別のブックであるBook1のSheet1のセルA1に300と入力してみます。

以下のコードを入力します。

なおこの方法は、現在開いているブックのみ適用されます。

Option VBASupport 1
REM  *****  BASIC  *****

Sub another_book
	Workbooks("Book1.ods").Sheets("Sheet1").Range("A1").Value = 300
End Sub

F5キーを押します。

すると以下のようにBook1のSheet1のセルA1に300が入力されます。

なお、もしRange(A1)とだけ記述して、シートもブックも指定していない場合はどうなるかというと、現在開いているブックのシートのセルA1というようになります。

LibreOffice CalcのVBAでシートを指定する具体例③ LibreOffice CalcのVBAでデータ抽出で使用した表を用いて、Calc(表計算)入門を抽出したデータを、Sheet2にコピーする

前回のブログ記事でデータ抽出で使用した表を用いて、Excel入門を抽出したデータを、Sheet2にコピーするということを行います。

以下のコードを入力します。

Option VBASupport 1
REM  *****  BASIC  *****

Sub Movingsheets

	Dim saisyugyo As Long
	saisyugyo = Cells(Rows.Count, 1).End(xlUp).row
	
	Dim i As Long

	For i = 2 To saisyugyo
	
		Dim kurikaeshi As Long
		
		kurikaeshi = Range("D" & i).Value * Range("E" & i).Value

		Range("F" & i).Value = kurikaeshi
		
			If Range("F" & i).Value < 3000 Then
			
			 Range("G" & i).Value = 500
			 
			 Else
			 
			 Range("G" & i).Value = 0	 
			 
			End If

	Next i
	
	Range("A1").AutoFilter 3, "Calc(表計算)入門"
	
	Range("A1").CurrentRegion.Copy Sheets("Sheet2").Range("A1")
	
End Sub

最初に、Next iを改行し、前回のデータ抽出で学んだ方法でCalc(表計算)入門のみ抽出するコードの

Range("A1").AutoFilter 3, "Calc(表計算)入門"

を記述します。

そして改行します。

そして以下のコードを入力します。

Range(“A1”).CurrentRegion.Copy Sheets(“Sheet2”).Range(“A1”)

Range(“A1”).CurrentRegion.Copyの説明をします。

CurrentRegionですが、これはデータが入っている表全体を指定するものです。

その後にCopyメソッドを記述することで、Calc(表計算)入門のみ抽出した表をコピーします。

Sheets(“Sheet2”).Range(“A1”)の説明をします。

これは、コピー先は、Sheet2のA1という意味のコードです。

これでF5キーを押して実行します。

するとSheet1にCalc(表計算)入門のみ抽出したされます。

そして、Sheet2にCalc(表計算)入門のみ抽出したデータがコピーされます。

LibreOffice CalcのVBAでシート名を変更する方法

LibreOffice CalcのVBAでは、シート名を変更することが出来ます。

コードですが以下のように記述します。

Worksheets(“シート名を変更したいシート”).Name = “変更したいシートの名前”

“シート名を変更したいシート”ですが、例えばSheet1を変更したければ”Sheet1″と記述します。

“変更するシートの名前”、変更したいシート名にしたい名前、例えばSheet1の名前をシート1にしたければ、”シート1″と記述します。

具体例として、Sheet1を売上表、Sheet2をCalc(表計算)入門という名前に変更してみます。

コードは以下のようになります。

Sub change_name

	Worksheets("Sheet1").Name = "売上表"
	Worksheets("Sheet2").Name = "Calc(表計算)入門"

End Sub

以下のように、Sheet1が売上表、Sheet2がCalc(表計算)入門とシート名が変更されます。

タイトルとURLをコピーしました