Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » アクティブスライド上のすべての文字列を取得するPowerPointマクロ

アクティブスライド上のすべての文字列を取得するPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010

PowerPointで作成された資料に入力されている文字列を、Wordなど他のアプリケーションで作成する資料でも流用したい、ということが実務ではあります。

流用したい文字列が少なければコピーと貼り付けを繰り返せば済みますが、たくさんの文字列を流用したい場合には、コピペの繰り返しが面倒になります。

そのためのマクロを作成しましたのでご紹介しておきます。

[スポンサードリンク]

アクティブなスライドの、プレースホルダ・テキストボックス・オートシェイプに入力されている文字列を取得するためのマクロです。

▼アクティブスライドの文字列を取得する

Sub アクティブなスライドの文字列を出力する()
'アクティブなスライドの文字列を
'クリップボードとイミディエイトウィンドウに出力する
'Microsoft Forms 2.0 Object Libraryへの参照設定が必要

 Dim shp As Shape
 Dim buf As String
 Dim obj As New DataObject

 buf = ""

 With ActiveWindow.Selection.SlideRange
  For Each shp In .Shapes
   '文字列を変数に格納
   '垂直タブはvbCrLfに置換
   buf = buf & _
    Replace(shp.TextFrame.TextRange.Text, Chr(11), vbCrLf) & vbCrLf
  Next shp
 End With

 'クリップボードに出力
 With obj
  .SetText buf
  .PutInClipboard
 End With

 'イミディエイトウィンドウに出力
 Debug.Print buf

End Sub

上記のマクロを実行すると、クリップボードとイミディエイトウィンドウにアクティブスライドの文字列が出力されます。

例えば、文字列をWordで流用したいのなら、上記のマクロを実行してから、[Ctrl]+[V]キーを押せばアクティブなスライドの文字列がWord文書に貼り付けられます。

ループ文の中でShapeオブジェクトをなめていき、
  For Each shp In .Shapes
   buf = buf & _
    Replace(shp.TextFrame.TextRange.Text, Chr(11), vbCrLf) & vbCrLf
  Next shp
入力されている文字列を変数「buf」に格納しておいてあとからクリップボードとイミディエイトウィンドウに出力しています。

変数に格納するときに、[Shift]+[Enter]キーで設定された改行(垂直タブ)をvbCrLfに置換しています。

注意点は、「Microsoft Forms 2.0 Object Library」への参照設定が必要なことです。参照設定はVBE(Visual Basic Editor)のメニュー[ツール]-[参照設定]から表示される[参照設定]ダイアログで設定するのが教科書的操作ですが、Microsoft Forms 2.0 Object Libraryの場合はフォームモジュールを挿入してやるのが簡単です。

一旦フォームを挿入してやればMicrosoft Forms 2.0 Object Libraryへの参照設定が自動的にできますので、その後挿入したフォームを削除してやるといいでしょう。

プレースホルダ・テキストボックス・オートシェイプ以外のオブジェクトがある場合、上記のマクロを実行するとエラーとなる可能性がありますので、その場合は「On Error Resume Next」するなどしてください。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » アクティブスライド上のすべての文字列を取得するPowerPointマクロ

「TextFrame・TextRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.