
エクセルVBAでパワーポイントを開き、パワーポイント表に文字を挿入、名前の付けてjpeg保存にする段階で『実行時エラー424オブジェクトが必要です』でエラーになります。丸1日原因を探しましたがわかりません。大変こまっております。どなたかご教授くださいm(__)m
Sub Macro()
Dim objPPT As Object '参照設定すれば
PowerPoint.Application
Dim myPre As Object 'PowerPoint.Presentation
Dim Sld As Object 'PowerPoint.Slide
Dim Shp As Object 'PowerPoint.Shape
Dim myRow As Object 'PowerPoint.Row
Dim myCell As Object 'PowerPoint.Cell
Dim mySht As Worksheet
Dim n As Long
Dim j As Long
Dim fd As FileDialog 'ファイルダイアログ
'任意のファイル呼び出し
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
.AllowMultiSelect = True
.Filters.Add "PowerPointファイル", "*.ppt; *.pps; *.pptx; *.pptm", 1
If .Show <> -1 Then Exit Sub
End With
Set mySht = ActiveSheet
'パワーポイント起動
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
i = mySht.Range("A" & Rows.Count).End(xlUp).Row + 1 '行カウンタ初期化
For n = 1 To fd.SelectedItems.Count '取得したファイルの情報のオブジェクトの数
'パワポファイル開く
Set myPre = objPPT.Presentations.Open(fd.SelectedItems.Item(n), True)
For Each Sld In myPre.Slides 'スライドループ
For Each Shp In Sld.Shapes '図形ループ
If Shp.HasTable Then '表発見
For Each myRow In Shp.Table.Rows '行ループ
For Each myCell In myRow.Cells 'セルループ
myCell.Shape.TextFrame.TextRange.Text = "おはよう"
Next
Next
End If
Next
Next
Next n
'ファイルの保存(ここで実行エラー)
ActivePresentation.SaveAs Filename:="C:\power.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
'パワポファイル閉じる
myPre.Close
objPPT.Quit 'パワーポイント終了
Set myCell = Nothing
Set myRow = Nothing
Set Shp = Nothing
Set Sld = Nothing
Set myPre = Nothing
Set objPPT = Nothing
MsgBox ("処理が終了しました")
End
インデントがうまく表示されないので、ホームページにアップロードしました。よろしくお願いいたします。
http://www.geocities.jp/tmp025tmp/test.html
No.3ベストアンサー
- 回答日時:
エラー番号だけを言われても・・・さっぱりわかりません。
ですの想像でしか答えられません・・・
私の環境では
「myPre.SaveAs」
で通りました。
ですので、コードが省略されていない限り、通ると思います。
>Excel VBA に対して、ActivePresentation.SaveAs が発行されているので、(中略)、そのやり方が無知でわかりません。
ExcelVBAでのアクティブはWorkBookです。
ですので、エクセル君に「今前面にあるプレゼンを保存して」と言っても伝わりません。
「パワーポイントの、今前面にある・・」と伝える必要があります。
その場合、objPPT変数を利用し「objPPT.ActivePresentation.SaveAs」となります。
いま、objPPT.ActivePresentationが「変数:myPre」に保持されているのであれば、「myPre.SaveAs」で通じます。
保持されてないのであれば、「objPPT.ActivePresentation.SaveAs」としてみてください。
~~~以下は上記で解決しない場合~~
とりあえず
[2147024809 EXCEL エラー]
でググってみました。同一のエラー番号で、様々なケースが出ています。
勝手に「Excelの予期せぬエラー番号かな?」と思いました。
その中に
http://support.microsoft.com/kb/409282/ja
というページを見つけました。
VB6時代「プロジェクトが壊れる」という現象がありました。
特定の端末ではエラーとなるという状況です。
(以下対策)
「第一の対策は、参照設定をしなおす。」
それがだめなら
「第二の対策として、プロジェクトを新規に作り、コードを移行する」
それがだめなら
「第三の対策として、本体をフォーマットして清める」
それと同じかも知れません。
今回の質問は、VB6ではなくVBAということで、
「プロジェクト」<-「WorkBook」
と読み替えてください。
新規のワークブックを作成し、そっちで実行しても一緒ですか?
この方法は、VB6の第二の対策です。
それがだめなら、Officeオブジェクトの操作でエラーが発生するということで、Office製品の再インストールをしてみるのもよいかもしれません。
それと「他の端末では動作するのではないか?」という疑念も持っています。
あと、ダイアログでのファイル選択などの不要な部分を抜いて、1ファイルだけでも結果が同じかどうかを知りたいです。
「対策を練って解消しないけど、他の端末では動く」という状況であれば、残念ながら本体のお清めの時期かも知れません・・・
お忙しい中、いろいろ調べていただきまして、誠にありがとうございます。
「Const ppSaveAsJPG = 17」を宣言することでエラーは起きなくなりました。
今回いろいろ、教えていただきまして、エラーに対するいろんな解決の仕方を学びました。
いろいろ、教えていただき、貴重な経験になりました。
本当にありがとうございました。
No.2
- 回答日時:
ActivePresentation.SaveAs Filename:="C:\power.jpg", ・・・
(下矢印)
myPre.SaveAs Filename:="C:\power.jpg", ・・・
に変えてみるとか?
1050YEN様、お忙しい中ご返信ありがとうございます。昨日、このやり方で試みたのですが、「実行時エラー'2147024809」が出てエラーになります。ファイルパスを正しく変えてもエラーがでました(*_*;
他の板でご指摘をいただいたのですが、Excel VBA に対して、ActivePresentation.SaveAs が発行されているので、Excel VBA はこの命令を理解できないから、理解できるようにしてやればいいのですが、そのやり方が無知でわかりません。どなたかご教授いただければ幸いです。

No.1
- 回答日時:
ActivePresentationじゃなくてobjPPTでSaveASメソッドをやってみるとどうでしょう?
suzukikun様
お忙しい中ご返信ありがとうございます。
大変無知でわからないのですが、
objPPT.SaveAs Filename::="C:\power.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse
でよろしいのでしょうか?
上記で実行したら、「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません」とエラーメッセージが出てしまします。無知で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
アクセスのクエリでコンパイル...
-
「パス名が無効です」の発生原因
-
NAS上のファイルの使用中が解除...
-
エクセルマクロでエラーの原因...
-
DisplayAlertsブロパティで ”実...
-
Adobeのプレミアプロの書き出し...
-
Returnに対するGoSubがありません
-
fgets関数のEOFの扱い方について
-
gccを行ってもexeファイルが生...
-
ファイルクローズ(fclose)でエ...
-
FORTRANの実行エラーについて
-
PowerShellを使って関連付けら...
-
Excel 2003 のエラーメッセージ
-
MCASのFOM出版のテキストについて
-
【COBOL】read文でエラー
-
ASP.NETでWebConfigのエラー
-
ホームページビルダー14でHP...
-
EXCEL マクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
ExcelVBAで既に開いてるwordを...
-
NAS上のファイルの使用中が解除...
-
Returnに対するGoSubがありません
-
gccを行ってもexeファイルが生...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
batファイルでレジストリキーの...
-
VB6 Dir関数で52エラー発生
-
エクセルマクロでエラーの原因...
-
VBでファイルが開かれているか...
-
【COBOL】read文でエラー
-
FTPの送信結果を検知したい
-
VBから参照できないCのDLLを使...
-
ACCESS VBAでのインポート
-
fgets関数のEOFの扱い方について
-
データベースソフトのアクセス2...
-
DisplayAlertsブロパティで ”実...
おすすめ情報