• ベストアンサー

エクセルVBAでパワーポイントを開き、表に文字を挿入jpeg保存時の実行時エラー

エクセル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ファイルだけでも結果が同じかどうかを知りたいです。 「対策を練って解消しないけど、他の端末では動く」という状況であれば、残念ながら本体のお清めの時期かも知れません・・・

tmp025tmp
質問者

お礼

お忙しい中、いろいろ調べていただきまして、誠にありがとうございます。 「Const ppSaveAsJPG = 17」を宣言することでエラーは起きなくなりました。 今回いろいろ、教えていただきまして、エラーに対するいろんな解決の仕方を学びました。 いろいろ、教えていただき、貴重な経験になりました。 本当にありがとうございました。

その他の回答 (2)

回答No.2

ActivePresentation.SaveAs Filename:="C:\power.jpg", ・・・ (下矢印) myPre.SaveAs Filename:="C:\power.jpg", ・・・ に変えてみるとか?

tmp025tmp
質問者

お礼

1050YEN様、お忙しい中ご返信ありがとうございます。昨日、このやり方で試みたのですが、「実行時エラー'2147024809」が出てエラーになります。ファイルパスを正しく変えてもエラーがでました(*_*; 他の板でご指摘をいただいたのですが、Excel VBA に対して、ActivePresentation.SaveAs が発行されているので、Excel VBA はこの命令を理解できないから、理解できるようにしてやればいいのですが、そのやり方が無知でわかりません。どなたかご教授いただければ幸いです。

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

ActivePresentationじゃなくてobjPPTでSaveASメソッドをやってみるとどうでしょう?

tmp025tmp
質問者

お礼

suzukikun様 お忙しい中ご返信ありがとうございます。 大変無知でわからないのですが、 objPPT.SaveAs Filename::="C:\power.jpg", FileFormat:=ppSaveAsJPG, EmbedTrueTypeFonts:=msoFalse でよろしいのでしょうか? 上記で実行したら、「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしていません」とエラーメッセージが出てしまします。無知で申し訳ありません。

関連するQ&A