2014/5/23 追記:
いつの間にか「ビデオの挿入ダイアログ」が更新され、挿入タブ -> ビデオ -> オンライン ビデオからYouTube等の動画を挿入できるようになっていました。
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 から動画を挿入したい」参照)
しかし、海外のサイト(下記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しか表示されませんでした。
この原因については詳しく調べていないので断定できませんが、下記質問を見ると急に動画の挿入ができなくなったようなので、
ビデオ挿入のボタンから挿入しても、スクリーンショットされた写真しか貼り付ける事ができません。(以前はちゃんとうごいていました) 埋め込みの方法でもやってみたのですが、全く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
下図のようなエラーが発生します。
「以前の埋め込みコードを使用する」にチェックを入れたコードでも同様のエラーが発生します。
これは埋め込みコードの一部に問題があるためで、正しく動画を挿入するためには下記手順で埋め込みコードを修正する必要があります。
※ 下記手順は 2013/9/4 時点での情報です。今後YouTubeの仕様変更に伴って、下記手順では対応できなくなる可能性があります。
- 「以前の埋め込みコードを使用する」にチェックを入れて埋め込みコードを取得する。
- 1. のコードにある動画のURL部分を「http://」で始まるようにする。
- 1. のコードにある「version=3」部分を「version=2」に変更する。
例えば「マイクロソフトのワークスタイル 2013 – YouTube」の埋め込みコードは下記になりますが、
<object width="560" height="315"><param name="movie" value="//www.youtube.com/v/Jfa1eAHr4Ks?hl=ja_JP&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&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&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&version=2" type="application/x-shockwave-flash" width="560" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>
この変更したコードを使って再び「Sample2」プロシージャを実行すると、
今度は正常に動画が挿入されました。
実は、PowerPoint 2010の「Web サイトからビデオ」で動画を挿入しようとしたときも
“この埋め込みコードからビデオを挿入できません。埋め込みコードが適切であることを確認してから、再度実行してください。”
“選択された項目を再生するには、新しいバージョンの Adobe Flash Player をインストールする必要があります。Adobe Flash Player をダウンロードするには、Adobe の Web サイトを参照してください。”
といったエラーが発生するのですが、上記手順で埋め込みコードを変更すれば、このエラーが発生しなくなります。
これでひとまずは解決なのですが、この埋め込みコードもすべての部分が必要なわけではありません。
必要なのは動画の指定だけですので、下記部分だけでも問題なく動画が挿入できます。
<object><param name="movie" value="http://www.youtube.com/v/Jfa1eAHr4Ks&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 & "&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
この記事へのコメントはありません。