もめんの格闘日記

主にPowerPointを中心としたPCのTips的なものを書いていく予定です。

【Officeマクロ】マクロを始める方法

これまでいくつかPowerPointマクロとかについて書いてきましたが、今日はそもそもマクロの始め方?作り方?書き方?について書きます。

 

説明はなしで手順だけ教えて!って方にはいいかと。

一つ一つ理解して進めたい方は"Excel マクロ"とか"VBA"で調べて下さい。

 

では早速。(Excel2010、PowerPoint2010で操作確認してます)

 

ExcelPowerPointとかのマクロ始め方

  • ExcelPowerPointとかを開く
  • Ctrl + F11 を押す(VBAのウィンドウが開く)
  • 画面上の"挿入"→"標準モジュール"を選択
  • ネット上に転がってるコードのSub ○○~End Subを記入する
  • 再生ボタン(実行)ボタンを押す

これでコードに異常がなければ動きます。

保存する際はExcelなら.xlsm、PowerPointなら.pptmのマクロ有効ファイル形式を選択して下さい。

VBAウィンドウは"開発タブ"の"Visual Basic"からも開けますが、Ctrl + F11の方が楽だと思います。

そもそも開発タブも最初は非表示にされていますからね。

開発タブは、リボンの上でどこでもいいので右クリックから"リボンのユーザー設定"を選択して、"開発"にチェックを入れて下さい。

ExcelPowerPointではVBAの書き方は違うそうなので、気を付けて下さい。

僕はExcelのはよくわかりません。

 

今回は以上で終わりです。

Ctrl + F11でマクロへの扉を開けて見て下さい。

Ctrl + F11以外のショートカットも紹介してます。

【普段使わない人に使って欲しい】個人的によく使うショートカットキー一覧

【PowerPointマクロ】フォント操作(フォント、サイズ、色、中央揃え等)

今回はシェイプ内に含まれるフォントの操作について書きたいと思います。

主にShapeRangeオブジェクトのTextFrameとTextEffectのプロパティについてですねー。

フォントサイズなど、どちらのプロパティでも出来るものもあるので、並記しています。

厳密な使い分けはよく知りませんが、僕は文が短くなる方で書いています。

※以下のコードの頭にはActiveWindow.Selection.ShapeRange等の~.ShapeRangeが付いているつもりで記載しています。

(PowerPoint2010で動作確認しています)

 

テキストの変更

 .TextFrame.TextRange.Text = "サンプルText"

 .TextEffect.Text = "サンプルText"

文章が" "の中の内容になります

元々のテキストに足す場合は次のようにすると簡単に追加できます。

 .TextEffect.Text = "追加Text" & .TextEffect.Text

 

フォントサイズの変更

 .TextFrame.TextRange.Font.Size = 16

 .TextEffect.FontSize = 20

 

フォントの変更(英数)

 .TextFrame.TextRange.Font.Name = "Arial"

 " "がフォントの名前

 

フォントの変更(日本語と全角英数)

 .TextFrame.TextRange.Font.NameFarEast = "MS Pゴシック"

フォントの名前は全角や大文字等を正確に入れないと変更されません

 

フォントの色を変える

 .TextFrame.TextRange.Font.Color = RGB(0, 0, 0)

この例ではフォントは黒になります。白はRGB(255,255,255)

 

フォントを太字にする

 .TextEffect.FontBold = msoTrue

普通の太さにもどす際はmsoFalseにします

 

フォントを斜体にする

 .TextEffect.FontItalic = msoTrue

 

フォントの位置を中央揃えにする

 .TextEffect.Alignment = msoTextEffectAlignmentCentered

右揃え:msoTextEffectAlignmentRight

左揃え:msoTextEffectAlignmentLeft

 

 

これでフォント操作の代表的なものは一通り書いたと思います。

個人的には.Font.NameFarEastの存在を知らなくて、日本語変わらねぇ!

とか思ってめっちゃ探した記憶があります。

ネットでコード例挙げてる人は知ってるから当然のように.Font.NameFarEastと.Font.Nameが列挙されてますが、気が付きませんでした。

 

 

今回は以上です。

ありがとうございました。

 

 

 

【PowerPointマクロ】名前を付けて保存するダイアログを開く

今回はPowerPointで名前を付けて保存するダイアログを開くマクロを紹介したいと思います。

~ダイアログとは、ファイルを保存するときにフォルダや名前を決めるときのウィンドウのことです。

名前を付けて保存はSaveAsでもできますが、ダイヤログは開きません。

ダイヤログを開くにはFileDialogを使います。保存以外にもファイルを開くときとかにも使えます。

では早速コードをどうぞ。

(PowerPoint2010で操作確認しています)

 

名前を付けて保存するダイアログを開くマクロ

Sub sample()
    Dim dlg As FileDialog
    Set dlg = Application.FileDialog(Type:=msoFileDialogSaveAs)


    If (dlg.Show = True) Then
      dlg.Execute
    End If
End Sub

実際の動作としては.Showのタイミングでダイヤログが開きます。

.Executeがないと保存ボタンを押しても保存されません。

保存のボタンが押されるとIf文の条件にかかり、.Executeで保存されます。

 

名前を付けて保存ダイヤログで表示される初期フォルダ、ファイル名を変更するマクロ

ダイヤログで表示される初期フォルダを指定することもできます。

Sub sample()

    Dim dlg As FileDialog
    Set dlg = Application.FileDialog(Type:=msoFileDialogSaveAs)
    
    dlg.InitialFileName = "C:\data"
    
    If (dlg.Show = True) Then
      dlg.Execute
    End If

End Sub

アンダーラインのある行の.InitialFileNameで初期フォルダを指定できます。

その名の通り初期ファイル名も指定できます。

Sub sample()

    Dim dlg As FileDialog
    Set dlg = Application.FileDialog(Type:=msoFileDialogSaveAs)
    
    dlg.InitialFileName = "C:\週報" & Format(Date, "yymmdd")
    
    If (dlg.Show = True) Then
      dlg.Execute
    End If

End Sub

これでフォルダ、ファイル名も指定できます。

学生のとき所属ゼミの週報はPowerPointで行っていたので、Dateを使って上記のようなファイル名を指定していれば、楽だったのかも。

Dateはその名の通り、日付を返す関数。

Formatは1つ目の引数の表示形式を指定する関数で、この場合は日付が161201のように入ります。

yyyymmddとすると20161201になります。

様々な使い方ができる関数でして、詳しく知りたい方はformat VBA とかでググってみて下さい。

 

個人的には、初期フォルダ、ファイル名を指定できるのが、気に入っています。

FileDialogは他の使い方があって、まだまだ奥が深いので、また勉強したら記事にします。

今回はこれで終わりです。

ありがとうございました。

 

【PowerPointマクロ】図の縦横比固定を解除する

PowerPointで図やオートシェイプの縦横比固定を解除するマクロを紹介します。

コードは以下です。

(PowerPoint2010で動作確認してます)

 

縦横比の固定を解除するマクロ

Sub sample()
  ActiveWindow.Selection.ShapeRange.LockAspectRatio = msoFalse
End Sub

これで選択しているシェイプの縦横比が固定されなくなります。

 

次は全スライドの全シェイプの縦横比が固定されなくなくマクロです。

Sub sample()
 
  Dim sld As Slide
  Dim shp As Shape
 
  For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
      shp.LockAspectRatio = msoFalse
    Next shp
  Next sld
 
End Sub

 

縦横比が固定された場合の幅と高さ

ここからは、ちなみにって感じの内容になります。

 

オートシェイプの図形は初めから縦横比は固定されていません。

挿入したJPEG等の図は初めから縦横比が固定されています。

 

縦横比が固定されたシェイプの大きさをマクロ上で変えた場合、最後に変更した項目に引っ張られます。

例えば次のマクロでは元々の大きさが高さ10cm×幅20cmの場合は、幅(Width)が最後に変更されているので、5cm×10cmになります。

Sub sample()
  With ActiveWindow.Selection.ShapeRange
    .LockAspectRatio = msoTrue
    .Height = 20 * 72 / 2.54
    .Width = 10 * 72 / 2.54
  End With
End Sub

*72/2.54はcmをpixelに換算するやつです。

 

今回は以上です。

ありがとうございました。

 

 

スライドの向きを固定するアドイン

スライドの向きを変えるマクロ、スライドのサイズを変えるマクロについて書いたので、スライド向きとサイズをいつでも一定にするアドインについて書きます。

PowerPointのスライドを横向き・縦向きに変える方法とマクロ - もめんの格闘日記

PowerPointのスライドのサイズを変える方法とマクロ - もめんの格闘日記

 

PowerPointはデフォルトのスライドの向きが横向き、サイズが"画面に合わせる"になっているので、いつでもA4横で使っている場合は新しいプレゼンテーションを開く度にサイズを変える必要があります。

A4縦で使ってたらもっとめんどうです。

 

リボンのカスタマイズする方法を使うとPowerPointを開いたときに向きやサイズを変えることができます。

  • リボンをカスタマイズするときのcustomUI.xml中に初期値を設定するonLoadってのを入れて、それで参照する関数の中にスライドの向きとかサイズを定義します。
  • そして、そのマクロが書かれているPowerPointをアドイン化して、アドインを読み込む。
  • するとPowerPointを開いたときに自動で向きとかを変更してくれます。

なんのこっちゃらと思う方は、参考にさせて頂いたページを参照下さい。

[PowerPoint]ドキュメントを開いたときに自動的にマクロを実行する | 初心者備忘録

 

一応僕も過去記事があるので参考にどうぞ。

マクロを実行するボタンを追加する方法(その1) - もめんの格闘日記

PowerPointファイルのアドイン化 - もめんの格闘日記

 

custom.xml

<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="sample" xmlns="http://schemas.microsoft.com/office/2006/01/customui">

 

上のonLoadの後の""に記述する関数名とVBAの関数名を同じにして下さい。

VBA

Public Sub sample(ribbon As IRibbonUI)
  ActivePresentation.PageSetup.SlideOrientation = msoOrientationHorizontal
  ActivePresentation.PageSetup.SlideSize = ppSlideSizeA4Paper
  MsgBox "A4横にしました"
End Sub

このcustomUI.xmlVBAを記述したPowerPointをアドイン(.ppam)として保存して下さい。

そして、"開発"タブの"アドイン"ボタンからアドインを読み込む。

そのとき"A4横にしました"とメッセージボックスが表示されればOKです。

"A4横にしました"ってのは確認用なので、鬱陶しければ消して、再度アドインとして保存して下さい。

あ、アドインを上書きするときは、アドインのチェックをはずしてからして下さい。

 このアドインを読み込めば、新しいプレゼンテーションを開いてもA4横になっているはずです。

msoOrientationHorizontalをmsoOrientationVerticalにすれば縦向きになります。

 

これでいつでもA4で表示されるっーー!

って思ったのですが、落とし穴が。。。

使ってみてわかったのですが、これはPowerPointを起動したときだけマクロが動きます。

PowerPointを開いている状態で新規プレゼンテーションを開いてもA4にはなりませんでした。。。

な。。んだ。。。と。。。

 

悲しいことに、使い勝手はそこまでよくないですが、ちょっとだけサイズ変更の煩わしさから解消されると思います。

うーむ、残念。

 

今回はこれで終わりです。

よこくわからないことがあればコメント下さい。

ありがとうございました。

PowerPointのスライドのサイズを変える方法とマクロ

この前はスライドの向きを変える方法を書いたので、今日はスライドのサイズを変える方法を書きます。

PowerPointのスライドを横向き・縦向きに変える方法とマクロ - もめんの格闘日記

 

PowerPointでの操作方法だけだと短いので、マクロも書きます。

コードが見たい人は後半から見て下さい。ではPowerPoint上での方法から。

(PowerPoint2010で操作確認してます。)

 

スライドのサイズを変える方法

  • "デザイン"タブ→"ページ設定"をクリックするとページ設定ウィンドウが開く
  • "スライドのサイズ指定"のドロップダウンリストの中にA4、B5とかよく使うサイズが入っています
  • 幅と高さを詳細に決めたいときはその下の幅と高さで細かく決めれます

f:id:momen40:20161124191149j:plain

同じウィンドウ内でスライドの縦向きと横向きも変えれます。

スライドのサイズは、おそらくデフォルトでは"画面に合わせる"になっていて、縦横比はディスプレイの大きさに依存していると思います。

僕はA4サイズで使うことが多いので、新しくプレゼンテーション開くと"画面に合わせる"になっていて毎回変更するのがめんどうです。

今度、勝手にA4サイズに変更するアドインについて書くつもりです。

 

ちなみにページ設定ウィンドウ左下にある"スライド開始番号"を0にすると1枚目のスライドのページ番号が0になります。

そうすると1枚目はタイトルのスライドで2枚目のページ番号を1にしたい!ってときに使えます。

それ以外の活用方法を僕は知りません。

お次はマクロです。

 

スライドのサイズを変えるマクロ

マクロのコードです。

Sub sample()
ActivePresentation.PageSetup.SlideSize = ppSlideSizeA4Paper
End Sub

これでスライドのサイズがA4になります。

 

Sub sample()
ActivePresentation.PageSetup.SlideWidth = 27.51 * 72 / 2.54
ActivePresentation.PageSetup.SlideHeight = 19.05 * 72 / 2.54
End Sub

これでスライドの幅と高さを自由に決めれます。

これもA4と同じ大きさになります。

*72/2.54ってのはcmをマクロ上の大きさ(pixel)への換算するやつです。

そんなに詳しくないけど、一応過去記事あります。

PowerPointマクロ上での長さ(pixel)とcmを換算する方法 - もめんの格闘日記

 

 今回はこんな感じです。

なんか自分の過去記事貼るの恥ずかしい。

終わり、ありがとうございました。

PowerPointのスライドを横向き・縦向きに変える方法とマクロ

今回はスライドの向きを横向き、縦向きに変更する方法を書きます。

それだけだと記事にならないのでスライドの向きを変えるマクロについても書きます。

ではさっそくPowerPoint上での変更方法からいきます。

マクロ見たい人は後半から見て下さい。

(PowerPoint2010で動作確認してます)

 

 

スライドの向きを変える方法

スライドの向きを変えるには"デザイン"タブの"スライドの向き"で縦と横を選択すれば変更できます。

f:id:momen40:20161123225510j:plain

これだけです。PowerPoint2007より前のバージョンでも、どこかにページ設定ってのがあったと思います。。。

次はマクロです。

 

 

スライドの向きを変えるマクロ

マクロのコードは以下です。

Sub sample()
ActivePresentation.PageSetup.SlideOrientation = msoOrientationVertical
End Sub

これでスライドが縦向きになります。

msoOrientationVerticalをmsoOrientationHorizontalにすると横向きになります。

 

今回は以上です。

この記事を書いてて、"いつでもスライドを縦向きにするアドイン"があったら使うこともあるかも。と思ったので、ニーズがあるのかわかりませんが、アドインについても後日書こうと思います。

終わりです。ありがとうございました。