
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
ExcelVBAにて既に開かれているPowerpointをアクティブにするには?
Excel(エクセル)
-
VBAにてEXCEL以外のファイル(テキストなど)がすでに開いているかの確認方法
Visual Basic(VBA)
-
【VB.NET】 パワポ操作を非表示で
Visual Basic(VBA)
-
-
4
VBAで既に開いている別アプリケーションのオブジェクトを得る
Visual Basic(VBA)
-
5
EXCELのVBAでWORDが開いてあるかチェック
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
エクセルVBAを使用し、指定のパワーポイントをPDF保存する方法
Excel(エクセル)
-
8
【Excel VBA】書き込み先ブックが既に開かれてた場合の処理
Visual Basic(VBA)
-
9
ファイルが開かれているかどうかの判断
Visual Basic(VBA)
-
10
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
11
VBAでCSVファイルが使用中かどうかの確認
Visual Basic(VBA)
-
12
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
13
実行時エラー 438になった時の対処法を教えて下さい。
Visual Basic(VBA)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
16
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
17
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
18
VBAでアクティブなファイルを切り替える
PowerPoint(パワーポイント)
-
19
VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます
Visual Basic(VBA)
-
20
Excel VBA でファイルが開かれているか確認する
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どう増強すべきか
-
マクロで、次のコードへ行く前...
-
private subモジュールを他のモ...
-
n88 Basic に関して(ループ)
-
C++ Builder6.0 TNMFTPコンポー...
-
エクセル画面のちらつきなくす...
-
エクセル VBAで複数セル選択時...
-
エクセルVBAでロックをかけたい
-
aspx の同時処理数について教え...
-
StatusStripの表示が更新されな...
-
ListViewから選択中の文字列を取得
-
¥マークを含むパスの処理につ...
-
IF文に時間(何時から何時ま...
-
VBA 複数の行を高速で削除する...
-
VB6 カウントアップ処理について
-
エクセル 複数の文字を同時に検...
-
【VBA】エラー処理で別プロシー...
-
パソコンへの「Dropbox...
-
ユーザーフォームを表示中にシ...
-
worksheetFunctionクラスのVloo...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【C#/Java?】try-catchでcatch...
-
vbaのエラー対応(実行時エラー...
-
private subモジュールを他のモ...
-
マクロで、次のコードへ行く前...
-
シグナル 6(SIGABRT)とは?
-
特定の名前のオートシェイプの...
-
IF文に時間(何時から何時ま...
-
どう増強すべきか
-
特定のファイルを他のプロセス...
-
Word VBA。各マクロの間に待ち...
-
どうやってもFor文を抜けてしま...
-
Excel VBA セルの名前があるか...
-
ExcelのVBAで、選択したファイ...
-
【C#】Page_Loadさせない方法に...
-
StatusStripの表示が更新されな...
-
途中で処理を中断させたい (ア...
-
エクセル VBAで複数セル選択時...
-
Functionで戻り値を複数返す方法
-
VBAでBook読み込み時の非表示方...
-
VBA 複数の行を高速で削除する...
おすすめ情報