Office関連

PowerPoint 2013でYouTubeの動画を挿入する。

2014/5/23 追記:
いつの間にか「ビデオの挿入ダイアログ」が更新され、挿入タブ -> ビデオ -> オンライン ビデオからYouTube等の動画を挿入できるようになっていました。

Office2013_51_08

Office2013_51_09

Office2013_51_10

2013/9/5 追記:
PowerPoint 2010/2013で簡単にYouTube動画を挿入できるようにするためのアドインを作成しました。
今後、YouTubeやPowerPointの仕様変更に伴って、アドインが動作しなくなる可能性はありますが、2013/9/5 現時点ではとりあえず動作確認できています。

・YouTube動画挿入アドイン for PowerPoint
//www.ka-net.org/blog/?p=3526

マイクロソフト コミュニティでPowerPoint 2013でYouTubeの動画が挿入できないという質問がありました。

私の環境でも試したところ、たしかに質問者さんが仰っているようにSkyDriveとFacebookしか表示されませんでした。
世の中は不思議なことだらけで有名なラムさんの方でも同様のようです。
(「PowerPoint 2013 で YouTube から動画を挿入したい」参照)

Office2013_51_01

しかし、海外のサイト(下記Webページ)を見ると、YouTubeや埋め込みコードの貼り付け欄が表示されていて、問題無く動画の挿入が行えているようだったので、英語版のWindows 8とOffice 2013で確認してみたのですが、

・How to Insert a YouTube Video Into a PowerPoint Presentation in Office 2013
http://www.howtogeek.com/tips/how-to-insert-a-youtube-video-into-a-powerpoint-presentation-in-office-2013/

こちらもSkyDriveとFacebookしか表示されませんでした。

Office2013_51_02

この原因については詳しく調べていないので断定できませんが、下記質問を見ると急に動画の挿入ができなくなったようなので、

ビデオ挿入のボタンから挿入しても、スクリーンショットされた写真しか貼り付ける事ができません。(以前はちゃんとうごいていました) 埋め込みの方法でもやってみたのですが、全くyoutubeと連動しません。どうしてでしょうか?

パワーポイント2013にyoutube – マイクロソフト コミュニティ より

YouTubeの仕様変更に伴ってMicrosoft側でビデオの挿入ダイアログ(実体はWebページなのでMicrosoft側ではいつでも仕様変更可能)の仕様を変更したのかもしれません。

ただ、オンライン動画を挿入するためのメソッド自体は問題なく使えますので、自分でマクロを書いて、下記コードのようにShapesオブジェクトのAddMediaObjectFromEmbedTagメソッドの第一引数(EmbedTag)に動画の埋め込みコードを指定すれば、YouTubeの動画をスライドに挿入することが可能です。

Option Explicit

Public Sub Sample()
  Application.ActivePresentation.Slides(1).Shapes.AddMediaObjectFromEmbedTag "動画埋め込みコード"
End Sub

ただし、YouTubeの動画埋め込みコードをそのまま引数に指定しても正しく挿入できません。
例えばスライド1にテキストボックスを挿入し、そのテキストボックスに埋め込みコードを貼り付けた後(※ YouTube動画の埋め込みコード取得方法は「動画と再生リストを埋め込む – YouTube ヘルプ」参照)、下記のコードを実行しても、

Option Explicit

Public Sub Sample2()
  With Application.ActivePresentation.Slides(1).Shapes
    .AddMediaObjectFromEmbedTag .Item(1).TextFrame.TextRange.Text
  End With
End Sub

下図のようなエラーが発生します。

Office2013_51_03

以前の埋め込みコードを使用する」にチェックを入れたコードでも同様のエラーが発生します。
これは埋め込みコードの一部に問題があるためで、正しく動画を挿入するためには下記手順で埋め込みコードを修正する必要があります。

※ 下記手順は 2013/9/4 時点での情報です。今後YouTubeの仕様変更に伴って、下記手順では対応できなくなる可能性があります。

  1. 以前の埋め込みコードを使用する」にチェックを入れて埋め込みコードを取得する。
  2. 1. のコードにある動画のURL部分を「http://」で始まるようにする。
  3. 1. のコードにある「version=3」部分を「version=2」に変更する。

例えば「マイクロソフトのワークスタイル 2013 – YouTube」の埋め込みコードは下記になりますが、

<object width="560" height="315"><param name="movie" value="//www.youtube.com/v/Jfa1eAHr4Ks?hl=ja_JP&amp;version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="//www.youtube.com/v/Jfa1eAHr4Ks?hl=ja_JP&amp;version=3" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>

PowerPointで正しく挿入するために、上記手順に従ってコードを変更すると下記のようになります。
(テキストエディタの置換機能を使うと簡単に変更できます。)

<object width="560" height="315"><param name="movie" value="http://www.youtube.com/v/Jfa1eAHr4Ks?hl=ja_JP&amp;version=2"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/Jfa1eAHr4Ks?hl=ja_JP&amp;version=2" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>

この変更したコードを使って再び「Sample2」プロシージャを実行すると、

Office2013_51_04

今度は正常に動画が挿入されました。
実は、PowerPoint 2010の「Web サイトからビデオ」で動画を挿入しようとしたときも

Office2013_51_05

“この埋め込みコードからビデオを挿入できません。埋め込みコードが適切であることを確認してから、再度実行してください。”

Office2013_51_06

“選択された項目を再生するには、新しいバージョンの Adobe Flash Player をインストールする必要があります。Adobe Flash Player をダウンロードするには、Adobe の Web サイトを参照してください。”

Office2013_51_07

といったエラーが発生するのですが、上記手順で埋め込みコードを変更すれば、このエラーが発生しなくなります。

これでひとまずは解決なのですが、この埋め込みコードもすべての部分が必要なわけではありません。
必要なのは動画の指定だけですので、下記部分だけでも問題なく動画が挿入できます。

<object><param name="movie" value="http://www.youtube.com/v/Jfa1eAHr4Ks&amp;version=2" /></object>

上記コードの中で可変的なのはビデオID「Jfa1eAHr4Ks」の部分で、これを変数にして処理をまとめたのが下記のコードになります。

Option Explicit

Public Sub Sample()
'ビデオID(YouTube動画のURL[http://www.youtube.com/watch?v=***********]の[***********]部分)を指定
  InsertYouTubeVideo "Jfa1eAHr4Ks"
End Sub

Private Sub InsertYouTubeVideo(ByVal VideoID As String)
'ビデオIDを指定してYouTube動画をアクティブなスライドに挿入する
'PowerPoint 2010/2013対応
  Dim sld As PowerPoint.Slide
  Dim embed As String
  
  Set sld = Nothing '初期化
  Set sld = GetActiveSlide(ActivePresentation)
  If Not sld Is Nothing Then
    embed = "<object><param name=""movie"" value=""http://www.youtube.com/v/" & VideoID & "&amp;version=2"" /></object>"
    sld.Shapes.AddMediaObjectFromEmbedTag embed
  End If
End Sub

Private Function GetActiveSlide(ByVal p As Presentation) As Slide
'アクティブなスライドを取得
  Dim ret As Slide
  
  Set ret = Nothing '初期化
  On Error Resume Next
  Set ret = p.Slides.FindBySlideID(p.Windows(1).Selection.SlideRange.SlideID)
  On Error GoTo 0
  Set GetActiveSlide = ret
End Function

エラー処理等は入れていませんが、これで大分すっきりしました。
PowerPointのマクロの実行方法については下記Webページをご参照ください。

・PowerPoint 2010 VBA の基礎知識
http://msdn.microsoft.com/ja-jp/library/office/ee814734%28v=office.14%29.aspx
・マクロを実行する – Office.com
http://office.microsoft.com/ja-jp/HA010338325.aspx

関連記事

  1. Office関連

    [リボン・カスタマイズ]dropDown要素の初期項目を指定する。

    MSDN フォーラムに「リボン:ドロップダウンリストにlabel初期値…

  2. Office関連

    [Excel Services ECMAScript]ActiveWorkbookのシート数を取得す…

    埋め込んだExcelワークブックのシート数を取得するコードです。 …

  3. Office関連

    PHPWordを使ってPHPからWordファイルを出力してみる。

    最近オトカドールやルミティアジュエルやらの記事ばかり書いていますが、今…

  4. アイコン一覧

    Office 2013 アイコン一覧(K,L)

    ・Office 2013 アイコン一覧 NUM…

コメント

  1. この記事へのコメントはありません。

  1. 2013年 11月 22日

Time limit is exhausted. Please reload CAPTCHA.

最近の記事

アーカイブ

RapidSSL_SEAL-90x50
PAGE TOP