PowerPointの「ノート」をLibreOfficeで抽出する

作成:2019年12月11日  最終更新:2019年12月11日

要約筆記で扱う講演でも、最近はPowerPoint(など)のスライド利用が普通になりました。

ところで、PowerPointには「ノート」という機能があります。ページ表示形式を「標準」にすると右下にある欄で、ページごとにスライド本編には表れない情報を記録できます。そして、スライドではなく、ノートが欲しいケースがあります。手作業だと、ページ数が多い場合に煩雑ですし、「Wordファイルに出力」は、結構時間がかかります。

そこで、ここでは、あえて互換オフィスソフトの1つ、LibreOffice(無料)のマクロを使って、このノートを抽出する方法を示します。

PowerPointのマクロではないのは、PowerPointが動かない環境でも動かせるといいかな、と思ったからです。LibreOfficeは無料だしmacOSや各種Linuxでも動作しますので。

なお、今回はノートを取り出すサンプルのスライドを用意しました。中身は全くありませんが、テスト用にどうぞ。

ファイル:サンプル用PowerPointスライド(note-sample.pptx)

1.LibreOfficeをインストール


この記事では、LibreOffice 6.2.8を使用しています。

このバージョン(またはもっと新しいもの)を既にインストールしている人は飛ばして構いません。

まだの人は、下記からダウンロードします。

download | LibreOffice - オフィススイートのルネサンス
https://ja.libreoffice.org/download/download/

「ダウンロード」ボタンがいきなりありますが、もう少し下にある2つめのボタンを、お勧めします(なぜか肝心な部分が英語ですが、最初のボタンはやや不安定でも最新版がいいという人向けです。2つめが、一般向けの安定版です)。なお、この記事を書いている2019年12月時点では、安定板は6.2.8です。

ダウンロードしたら、インストール。インストール時の設定は特に変えないでも問題ないと思います。

2.ノートを抽出するマクロを登録


まず、LibreOfficeを起動します。「Writer」とか「Presentation」でなく、ただの「LibreOffice」で大丈夫。

起動したら、メニューの「ツール」から「マクロ」を選び、中にある「マクロの管理」、そしてその中の「LibreOffice Basic...」を選びます。

マクロメニューを選択


小さなウインドウが現れます。左側の「マクロの記録先」として、「マイマクロ」の下の「Standard」の下の「Module1」をクリックします。

すると、中央の欄に「マクロのある場所: Module1」と出て、枠内に「Main」と表示されます。

この状態で、右にある「New」ボタンをクリックします。

マクロ管理ダイアログ内でマイマクロを選択


やや大きなウインドウが現れます。右側の領域に、「REM」「Sub Main」などと書いてあるはずです。

マクロエディタの初期状態


ここに、マクロを入れます。

(1)下のマクロ全体(「Sub Notes」から「End Sub」まで)を選択して、コピー
(2)先のウインドウの「Sub Main」とある領域の末尾を右クリックして「貼り付け」

Sub Notes
	Dim oPresentation, oPages, oPage, oNotes, oShape, oType, oRes, oDoc, oText
	Dim Dummy()
	oPresentation = ThisComponent
	oPages = oPresentation.getDrawPages()
	oRes = ""
	for page=0 to oPages.getCount()-1
		oRes = oRes & "<--" & (page+1) & "ページ" & Chr$(10)
		oPage = oPages.getByIndex(page)
		oNotes = oPage.getNotesPage()
		for index=0 to oNotes.getCount()-1
			oShape = oNotes.getByIndex(index)
			oType = oShape.getShapeType
			If oShape.supportsService("com.sun.star.drawing.Text") And oType = "com.sun.star.presentation.NotesShape" Then
				oRes = oRes & oShape.getString() & Chr$(10)
			End If
		Next index
	Next page
	oDoc = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Dummy())
	oText = oDoc.getText()
	oText.insertString(oText.getEnd(), oRes, false)
End Sub


マクロ入力済み状態


3.ノートを抽出


正しく動くか確認する意味でも、ノートを実際に抽出してみます。

先ほど示したサンプルのスライドをLibreOfficeで開き、メニューの「ツール」から「マクロ」を選び、中にある「マクロを実行」を選びます。

サンプルのスライドでマクロ実行メニューを選択


なお、もし次のような「このタスクを実行するには……」というウインドウが出ても、あわてずに「OK」ボタンを押せば大丈夫です(JREというツールが必要と言ってますが、実際にはなくても動きます)。

JREが必要と出ても無視してOK


小さな「マクロセレクター」というウインドウが出てきたら、左側「ライブラリ」領域の、「マイマクロ」の下の「Standard」の下の「Module1」を選択します。続いて、右側「マクロ名」領域から「Notes」を選びます。

実行するマクロを選ぶ


抽出したノートが、LibreOfficeのWriter(Wordみたいなもの)の文書として出てきます。あとは中身をコピーして、テキストエディタにでも貼り付けて加工できます。

ノート抽出完了


なお、「<--1ページ」などとあるのはスライドのページ数で、ページ区切りが分かるように、このマクロで付け加えたものです。

また、ノートがないページは空の行だけで次のページに進みます(ノートがなくてもページ数の行は入ります)。


◀(前記事)macOS用のZoomで、サインインせずにアップデートする方法
▶(次記事)Raspberry Pi 3 Model B+の無線LANでルータを構成する

(一覧)[2.技術情報 (tech)]