【PowerPoint VBA】スライド内の全文字列をテキストファイルに出力するPowerPointマクロ

2012年7月16日

2017年11月14日追記
ここで紹介しているサンプルコードでは取得できない文字列があります。
グループ化されたShape内の文字列は処理対象外です。ご注意ください。

今回の翻訳案件は、262ページのPowerPoint資料です。

納期まであまり翻訳時間がとれそうにないけど、どうやって翻訳やるんだろうか?マクロの作成のご依頼もいただいているし、セミナーあるし、723イベントあるし。。。

 

と、受注してからちょっと焦りましたが、やっぱり、ホームであるWordで翻訳をすることにしました。

以前、PowerPointで翻訳をしたことがあったのですが、苦痛以外のなにものでもありませんでしたので。

右クリックでGoogle!が使えないし、カーソル移動も大変だし。

 

そんなわけで、一旦Wordで翻訳をした後に、そのフレーズや文章の訳文を用いて、PowerPointで一括置換をします。

そうすれば、おそらく、完成するのではないでしょうか。

 

で、やっぱり、こういうときは、伊藤潔人さんのインストラクターのネタ帳でPowerPointマクロを探します。

以前は、PowerPointのノート部分の翻訳をしたときに、インストラクターのネタ帳からいただいたアイディアでマクロを作って大助かりでした。

今回も探してみると、すぐに見つかりました。

こちらの記事です。

 

スライド内の全文字列をノートに転記する

 

このマクロは、スライド毎に、スライド内のテキストをそのスライドのノートに転記します。

最初は、この方式でテキストをかき集めて、最終スライドのノートに全テキストを転記するようなマクロを書きました。

そしたら、処理時間がかかるんですね。

String変数にひたすらテキストを書き込んでいくのですが、それにまず時間がかかりますし、最終スライドのノートが1万語を超えるような大きさになりますので、こちらも重すぎるわけです。。。

 

で、最終的には、別ファイルにテキストで書き出すことにしました。

そのときに思いついたのは、きぬあささんのこちらの記事

 

マクロに割り当てたショートカットキーをCSVファイルとして出力するWordマクロ

 

今週末のサン・フレア アカデミーさんのセミナーに向けて、ショートカットキーのマクロを作っていました。

そのときにこのマクロを参考にさせていただいたので、なんとなく覚えておりまして(笑)。

このマクロでできること

PowerPointのスライドの文字列をテキストファイルに書き出します。

テキストファイルは、デスクトップに保存されます。

ファイル名は、対象となるPowerPointのファイル名の最後に、.txtをつけたものです。

ソフトリターン(Wordでは、↓と表示される改行記号、Chr(11)または、^lですね)も、テキストファイルで保持されるようです。

マクロの解説

全体の動きは、インストラクターのネタ帳からいただきました。

スライド番号を入れたかったので、墨付き括弧で全角数字を入れています。

その部分は24行目に表記きました。

テキストファイルに書き出す部分は、13行目~16行目、24行目、40行目に表記しました。

特に、デスクトップにファイルを置く方法については、初心者備忘録 の記載が大変参考になりました。

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

マクロ


Sub パワポのスライドのテキスト書出し()

 Dim mySlide As Slide
 Dim myShape As Shape
 Dim i As Integer
 Dim myFilePath As String
     
 If MsgBox("文字列をテキストファイルへ書出しますか?", vbYesNo) = vbNo Then Exit Sub

 i = 0
 
 'テキストの出力先ファイル(デスクトップにテキストファイル)
 myFilePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & _
        "\" & ActivePresentation.Name & ".txt"

 Open myFilePath For Output As #1

 For Each mySlide In ActivePresentation.Slides
  
  i = i + 1
  
  With mySlide
 
   Print #1, "【" & StrConv(i, vbWide) & "】"
 
   For Each myShape In .Shapes
  
    With myShape
     If .HasTextFrame Then
      Print #1, .TextFrame.TextRange.Text
     End If
    End With
  
   Next myShape

  End With

 Next mySlide

 Close #1
 MsgBox "書出しが、完了しました。"

End Sub

関連記事

スライド内の全文字列をノートに転記する  インストラクターのネタ帳

マクロに割り当てたショートカットキーをCSVファイルとして出力するWordマクロ  初心者備忘録

お知らせ

7月29日(日)にインストラクターのネタ帳 の伊藤潔人さんとWordマクロに関するコラボセミナーをさせていただきます。

ExcelマクロユーザーのためのWordマクロ入門セミナー

 

オフィス製品を知り尽くした伊藤さんが、どんな切り口で解説をされるのか楽しみで仕方がありません!

しかも、きぬあささんもすでに受講のお申し込みをされているそうですし。twitterでつぶやかれていたので、いいですよね、ここに書いても(笑)。

ぜひ、みなさまもお越しください。

コメント

 

  • 3. 書き戻しはどうするのでしょうか?

    抽出はわかりましたが、書き戻しはどうするのでしょうか?

    あと、buckeyeさんの SimpyTerms では、スライドしか抽出できず、ノート部分は抽出できないですよね? buckeyeさんに聞くべきかもしれませんが、もしも SimpyTerms でのノート抽出方法をご存じでしたら、ついでに教えていただけますと助かります。

    どうぞよろしくお願いいたします。

    Bay 返信する
  • 2. Re:無題

    >diatomさん

    コメントをどうもありがとうございます。

    たしかに、他のソフトを使うのってありですね。
    先人の知恵をいただくのがよそそうです。

    SimplyTermsは併用したら面白いことできそうですね。
    イメージできます。

    WordFastも試してみました。
    Werecatというマクロですね。

    不具合があって途中で止まってしまいましたが、動きは理解できました。

    このマクロはコードが公開されているので読んでみたのですが、複雑で挫折しました(笑)。

    書式付きで一気に抜き出せますね。

    ヒントをどうもありがとうとうございます。

  • 1. 無題
    PowerPoint面倒ですよね。
    buckeyeさんのSimplyTermsを使う手もあると思います。
    SimplyTerms でエクスポートして、テキストエディタ(ここはWordでも)で作業し、SimplyTermsでパワポへ書き戻す、といった感じで。他には、Wordfast Classic を併用して、Word上で作業する方法もありそうです。でも、新田さんなら、もっとWordマクロ的な発展がありそうで、楽しみです。
    diatom

 

-コード
-,