ブログ記事で図を作成する際には、毎回 Powerpoint を使って編集しています。
毎回同じ作業をすることになるので、作業時間の短縮をする工夫を日々考えています。
Powerpoint アプリをショートカットキー「Ctrl + Shift + P」で起動できるようにしています。
あらかじめよく使う図形(説明用の矢印など)をスライドに入れ込んだテンプレートを作ってあります。
また、ブログ用のフォルダに保存する作業を簡単に行うマクロ(VBA)を使っています。
さて、今回よく行う操作の1つである「図として保存」の操作を短縮するマクロ(VBA)を使った仕組みを作りましたので紹介します。
一部他のサイトを参考にさせて頂きました。
1、図として保存
ブログへの画像の投稿
ブログを書くとき、Powerpoint のスライド上の画像をコピーして(Ctrl + C)直接エディタに貼り付ける(Ctrl + V)ことが多いです。
ただ、どうしてもPowerpoint 上の画像を一度画像ファイルに変換して保存してから、Wordpress にアップロードしなければならない場合もあります。
アイキャッチ画像がそうです。
また、ブログの本文を一度エディタから WordPress にアップロードした後に、画像を追加したい場合は Powerpoint のスライド上の画像を直接コピペはできません。
面倒ですが、画像ファイルにして単独でアップロードしなければなりません。
そんなわけで、Powerpoint のスライド上の画像を「図として保存」という機能を使って画像ファイルを作らなければならないことが、まぁけっこうあります。私の場合。
図として保存
Powerpoint の機能の1つである「図として保存」はスライド上の画像を、jpg や png などの画像ファイルとして保存する方法です。
①スライド上の画像(作成したものでも編集したものでも可)を選択
↓
②右クリック
↓
③「図として保存」を選択
↓
④保存先のフォルダを選択
↓
⑤ファイル名を付ける
という流れで画像ファイルを作成できます。
さて、上記の保存先のフォルダを選択するところですが、
私の場合、「ブログ」フォルダというブログ用のフォルダを1つ作ってあり、その下に
ブログ1記事ごとに1つのフォルダを作り、使ったファイルなどまとめて保存するようにしています。
先ほどの、「図として保存」で保存先のフォルダを探す(④の操作)のが少々面倒です。
それでイライラすることがあったので、「図として保存」の作業で保存先のフォルダを探さなくて良いようにマクロ(VBA)を使った仕組みを考えました
2、現在アクティブなファイルと同じフォルダ内に図を保存するマクロ(VBA)
画像ファイルとして保存したい図形を選択した状態で実行するマクロです。
マクロを使うことによる作業過程の軽減
まず、今回紹介するマクロを使うと作業がどのようになるか示しておきますね。
画像ファイルとして保存したい図形を選択してマクロを実行(Alt + F8 を押して選択するのが早い)すると、「画像の名前を入力してください。」というメッセージとともに画像ファイルの名前を入れるボックスが出てきます。
画像の名前を入力し「OK」を押せば、現在の Powerpoint ファイルと同じフォルダに自動保存してくれます(画像ファイルの形式は jpg としています)。
これにより、イライラする画像ファイルの保存先を選択する過程が無くなります。
VBA コード
以下に全てのコードを示します。
VBE(エディタ)を Alt + F11 で開いて以下を書き込みます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Sub Shape_Save() On Error Resume Next Dim Blog_Folder_Path 'ブログ用フォルダのパス' Dim File_Path 'ファイルのパス' Dim Shape_Name '画像の名前' Blog_Folder_Path = "C:\〇〇〇\ブログ" File_Path = ActivePresentation.Path 'アクティブなファイルのパス' If InStr(File_Path, Blog_Folder_Path) = 0 Then MsgBox "ファイルをブログ用保存した後に再度実行して下さい。" Exit Sub Else End If Shape_Name = InputBox("画像の名前を入力してください") If Shape_Name = "" Then Exit Sub 'キャンセルボタンを押した場合は「終了」' '図として保存' ActiveWindow.Selection.ShapeRange.Export PathName:=File_Path & "\" & Shape_Name & ".jpg", Filter:=ppShapeFormatJPG End Sub |
コード説明
VBA コードについて説明します。
エラーが発生しても無視
冒頭で以下のように記述することでエラーが発生しても無視するので止まることはありません。
変数の定義
1 2 3 |
Dim Blog_Folder_Path 'ブログ用フォルダのパス' Dim File_Path 'ファイルのパス' Dim Shape_Name '画像の名前' |
Folder_Path には、一番上のフォルダ(名前は「ブログ」)のパスを入れます。
File_Path には、現在開いているアクティブなパワーポイントファイルのパスを入れます。
Shape_Name には、画像ファイルの名前を入れます。
変数への入力
1 |
Blog_Folder_Path = "C:\〇〇〇\ブログ" |
この部分では変数「Blog_Folder_Path」に「ブログ」フォルダのパスを入力しています。
〇〇〇の部分は使っているパソコンによって異なりますので確認して下さい。
フォルダの名前も私は「ブログ」にしているというだけです。
パスは文字列なので ” ” で括ることを忘れないようにしましょう。
フォルダのパスは、該当するフォルダを選択して Shift キー押しながら右クリック「パスのコピー」を選択すればコピーできます。
1 |
File_Path = ActivePresentation.Path 'アクティブなファイルのパス' |
この部分では変数「File_Path」に現在開いているアクティブなパワーポイントファイルのパスを入れています。
ActivePresentation.Path はアクティブなパワーポイントファイルのパスを意味します。
(ActivePresentation オブジェクトの Path プロパティ)
パワーポイントファイルを1つ開いるだけであれば、必然的にそのファイルが該当します。
Excel で言うところの「ActiveWorkBook」と同じですかね。
先にファイルの保存をさせる
If 文を使います。
1 2 3 4 5 |
If InStr(File_Path, Blog_Folder_Path) = 0 Then MsgBox "ファイルをブログ用保存した後に再度実行して下さい。" Exit Sub Else End If |
InStr 関数は次のように記述して使います。
「検索対象となる文字列」の中に「検索する文字列」が含まれる場合は、その位置を返します。
見つからない場合は「0」を返します。
例えば
InStr(“あいうえお”, “うえ”)
とした場合、「うえ」は「あいうえお」の中で前から数えて3番目にあるので「3」を返します。
また、例えば
InStr(“あいうえお”, “かき”)
とした場合、「かき」は「あいうえお」の中に含まれないので「0」を返します。
1 2 3 4 5 |
If InStr(File_Path, Blog_Folder_Path) = 0 Then MsgBox "ファイルをブログ用に保存した後に再度実行して下さい。" Exit Sub Else End If |
さて、今回の If 文について
ファイルのパス「File_Path」の中に「ブログ」フォルダのパス「Blog_Folder_Path」が含まれない場合
「ファイルをブログ用に保存した後に再度実行して下さい。」
というメッセージを表示させて、プログラムを終了します。
1 |
Shape_Name = InputBox("画像の名前を入力してください") |
つまり、ファイル自体を「ブログ」フォルダに保存してない場合には、
この後の画像として保存する操作ができないようにしてあるということです。
なお、「ブログ」フォルダの中への保存についてもマクロを使って対応しています。
画像ファイルの名前を入力
Shape_Name = InputBox(“画像の名前を入力してください”)
この部分では、インプットボックスを表示させて画像の名前を入力させます。
InputBox 関数は以下のように記述して使います。
InputBox(メッセージ)
メッセージは “” で囲わなければなりません。
この関数はキャンセルボタンを押した場合には、””(空白)を返します。
If Shape_Name = “” Then Exit Sub ‘キャンセルボタンを押した場合は「終了」’
この部分では、キャンセルボタンを押した場合にはプログラムを終了(Exit Sub)するように指示しています。
図として保存
今回の大事な箇所です。
1 |
ActiveWindow.Selection.ShapeRange.Export PathName:=File_Path & "\" & Shape_Name & ".jpg", Filter:=ppShapeFormatJPG |
この部分では、選択している図形を指定したフォルダに指定した名前で保存しています。
「図として保存」ですね。
Export メソッドを使って表すと以下のように記述します。
オブジェクト.Export PathName:=ファイルパス,Filter;=ファイル種類
オブジェクトは保存する対象で、今回の場合は選択した図形になります。
オブジェクトの指定は「ActiveWindow.Selection.ShapeRange」の部分で行っています。
「ActiveWindow」はApplication オブジェクトの ActiveWindow プロパティを意味しており、作業中のウインドウを表します。
「ActiveWindow.Selection」は作業中のウインドウをオブジェクトとし、そのオブジェクトの Selection プロパティを表しています。
つまり、作業中のウインドウで選択しているものということになります。
「ActiveWindow.Selection.ShapeRange」は「ActiveWindow.Selection」の部分で作業中のウインドウで選択しているものをオブジェクトとして、そのオブジェクトの ShapeRange プロパティを表しています。
つまり、「ActiveWindow.Selection.ShapeRange」で作業中のウインドウで選択している図形を表すことになります。
ファイルパスとして、今回指定したこのパワーポイントファイルのパスに図形の名前を付け足しています。
ファイルの種類は「ppShapeFormatJPG」とすることで拡張子を「.JPG」とすることを意味しています。
なお、この部分はこちらのサイトを参考にさせて頂いております。
3、まとめ
Powerpoint VBA を使って選択した図を現在のファイルと同じフォルダ内に保存する方法を紹介しました。
ブログの画像編集は作る図自体は毎回別物ですが、作る過程でルーチンが多くそれが重なると毎回毎回同じことやっているように感じて(実際そうなのですが)面倒になることが多いんですよね。
Powerpoint VBA を使って日々業務改善しておりますが、まだまだ改善の余地があると思っています。
最も使いやすい作業環境を目指して日々改善に取り組んで行きたいところです。