
ExcelのVBAで、PowerPointのファイルに対し処理を行ないたいと思っています。
処理の前にファイルを選択し、そのファイルが既に開かれていた場合に処理を中断する判定を入れたいと思っているのですが、ファイル選択後に
「実行時エラー429ActiveXコンポーネントは、オブジェクトを作成できません」
というエラーになってしまいます。
「For Each PptFile In」のあとの「PowerPoint.Presentations」の記述に問題があるようなのですが、改善方法をお教えいただけませんでしょうか。
Sub test()
Dim PptApp As PowerPoint.Application
Dim PptFile As Object
Dim myFilename As String
myFilename = Application.GetOpenFilename
Set PptFile = GetObject(, "Powerpoint.Application")
For Each PptFile In PowerPoint.Presentations
If PptFile = Dir(myFilename) Then
MsgBox "指定したファイルは開かれています"
Exit Sub
Else
MsgBox "PowerPointの処理を実行します"
'処理
End If
Next
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは。
どこが間違いとかいうよりも、私なら、こう書いているかなっていう感じですね。直してみると、違った趣旨のコードが残る所をみると、まったく違ったことを考えていらっしゃるのかなぁっていう気がします。
'//
Sub test1()
Dim PptApp As Object
Dim PptFile As Object
Dim myFilename As String
myFilename = "PowerPointの使い方" 'Application.GetOpenFilename
'ここでファイル名を求めると、まったく違った内容になるはずです。
Set PptApp = GetObject(, "Powerpoint.Application")
If PptApp Is Nothing Then
MsgBox "PowerPointは、起動しておりません", vbExclamation
Exit Sub
Else
For Each PptFile In PptApp.Presentations
If PptFile.Name Like myFilename & "*" Then
MsgBox "指定したファイルは開かれています"
Exit Sub
Else
MsgBox "PowerPointの処理を実行します" 'この意味が分かりません。
'処理
End If
Next
End If
End Sub
'//
ご報告が遅くなってしまってすみません。
実際には選択されたファイル種別を判定したうえで、PowerPointのファイルだった場合にこの処理を行なおうと思っており、ちょっと無理やり一部分を抜き出したため、間違いもありました。。
ですが、WindFallerさんのソースで目的が達成できました。
どうもありがとうございました。
実はこの内容でWordも同じように判定できると思って試したのですがうまくいかず、原因の確認に時間がかかってしまいました。
Wordは多重起動ができるため、うまくいかない場合があることがわかったのですが、また内容を整理したうえで質問させていただこうと思います。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
VBAにてEXCEL以外のファイル(テキストなど)がすでに開いているかの確認方法
Visual Basic(VBA)
-
-
4
【Excel VBA】書き込み先ブックが既に開かれてた場合の処理
Visual Basic(VBA)
-
5
【VB.NET】 パワポ操作を非表示で
Visual Basic(VBA)
-
6
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
7
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
8
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
9
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
10
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
11
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
14
Excel VBAで、ユーザーフォームの値を、モジュールで使用したい。
Visual Basic(VBA)
-
15
VBAコンボボックスの内容が反映されない
その他(プログラミング・Web制作)
-
16
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
17
エクセルVBAで一つ上の階層を指定して保存したい
Excel(エクセル)
-
18
Excelマクロで、稼働中のマクロを確認する方法
その他(Microsoft Office)
-
19
EXCELのVBAでWORDが開いてあるかチェック
Excel(エクセル)
-
20
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
private subモジュールを他のモ...
-
StatusStripの表示が更新されな...
-
【C#/Java?】try-catchでcatch...
-
どうやってもFor文を抜けてしま...
-
マクロで、次のコードへ行く前...
-
vbaのエラー対応(実行時エラー...
-
【C#】Page_Loadさせない方法に...
-
Excel VBA セルの名前があるか...
-
タイマーの使い方
-
バッチファイルでのエラー処理...
-
VB.NET SPRED(チェックボック...
-
ExcelのVBAで、選択したファイ...
-
IF文に時間(何時から何時ま...
-
Access プログレスバー 画面...
-
エクセル VBAで複数セル選択時...
-
IEで不正な処理で強制終了・...
-
以下マクロの処理を最終行まで...
-
【Vb.net】プリンタジョブの取得
-
アクセスからエクセルファイル...
-
ドリブン??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
private subモジュールを他のモ...
-
シグナル 6(SIGABRT)とは?
-
vbaのエラー対応(実行時エラー...
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
Excel VBA セルの名前があるか...
-
どう増強すべきか
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
【Vb.net】プリンタジョブの取得
-
シェルスクリプトでファイル内...
-
マクロで、次のコードへ行く前...
-
途中で処理を中断させたい (ア...
-
Word VBA。各マクロの間に待ち...
-
Functionで戻り値を複数返す方法
-
特定のファイルを他のプロセス...
-
【VBA】エラー処理で別プロシー...
-
ExcelのVBAで、選択したファイ...
-
VB6にてネットワーク上にある共...
おすすめ情報