こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBAで既存のパワポのファイルを開くには?

アクセスやエクセルからVBAで既存のパワポのファイルを開くには?

参照設定をして、
Sub test()
Dim App As PowerPoint.Application
Dim MyFileName As String

Set App = CreateObject("PowerPoint.Application")

MyFileName = CurrentProject.Path & "サンプル.ppt"
App.Visible = True

Set App = Nothing
End Sub

を実行すると、パワポの空のアプリケーション開きますが肝心のファイルが開きません。

開く方法を教えてください。

投稿日時 - 2012-10-19 20:07:40

QNo.7756449

困ってます

質問者が選んだベストアンサー

ExcelファイルやAccessファイルと
パワーポイントのファイルが同じフォルダにあるとして
Accessなら、CurrentProject.Path
Excelなら、ThisWorkbook.Path
でフォルダ名までが得られますので、それに \ を付け足して
CurrentProject.Path & "\" & "サンプル.ppt"

パワーポイントに参照設定を行っているのですから
CreateObjectせずに
Sub PPTopen()
Dim pp As New PowerPoint.Application
pp.Presentations.Open ThisWorkbook.path & "\" & "サンプル.ppt"
以下省略
で。
開くだけで、その後はVBAでパワーポイントを操作しないのであれば
Shell ("explorer.exe" & Chr(32) & ThisWorkbook.path & "\" & "サンプル.ppt"
↑読み取り専用で開かれました。当方 Office2010 の場合
↓PPTファイルをダブルクリックで開いた状態
CreateObject("shell.application").shellexecute ThisWorkbook.path & "\" & "サンプル.ppt"
とかでも。

ちなみにパワーポイントは数年来使ったことはありませんので
これ以上のことはご勘弁ください。

投稿日時 - 2012-10-20 10:42:06

お礼

参照設定を行ってる場合はCreateObjectは不要なのですか。

Sub test()
Dim MyFileName As String

MyFileName = CurrentProject.Path & "¥" & "サンプル.ppt"

Dim App As New PowerPoint.Application
App.Presentations.Open MyFileName
App.Visible = True

Set App = Nothing
End Sub
***********************************************
をすると、
実行時エラー -2147188160
「Presentations(不明なメンバー) : 無効な要求です。
PowerPoint のフレーム ウィンドウは存在しません。」
になってしまいました。

しかし、

Sub test2()
CreateObject("shell.application").shellexecute CurrentProject.Path & "\" & "サンプル.ppt"
End Sub

で、無事開くことが出来ました。ご回答ありがとうございました。

投稿日時 - 2012-10-24 22:35:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

CurrentProject.Path が返すパスに末尾に \ がありましたっけ?


あってもなくても対応できるようにして、再実行するとどうなりますか?

MyFileName = CurrentProject.Path & ".\サンプル.ppt"


C:\test が返されるなら、上記で C:\test.\サンプル.ppt → C:\test\サンプル.ppt と同じ
C:\test\ が返されても、上記で C:\test\.\サンプル.ppt → C:\test\サンプル.ppt と同じ

投稿日時 - 2012-10-19 20:29:44

お礼

パスセパレータも抜けてましたね。
ありがとうございました。

投稿日時 - 2012-10-22 23:51:37

ANo.1

直接の回答になりませんが、そのコードでは当然空でしょうね。MyFileName がappと全く関連内ですから。 たぶん app.open のようなメソッドがあるはずです。

投稿日時 - 2012-10-19 20:22:52

お礼

仰る通りなんです。
それはわかってるんですよ・・・
その部分が自分でわからなくて・・・

投稿日時 - 2012-10-22 23:51:26

あなたにオススメの質問