アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル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

A 回答 (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ファイルだけでも結果が同じかどうかを知りたいです。

「対策を練って解消しないけど、他の端末では動く」という状況であれば、残念ながら本体のお清めの時期かも知れません・・・
    • good
    • 0
この回答へのお礼

お忙しい中、いろいろ調べていただきまして、誠にありがとうございます。
「Const ppSaveAsJPG = 17」を宣言することでエラーは起きなくなりました。

今回いろいろ、教えていただきまして、エラーに対するいろんな解決の仕方を学びました。
いろいろ、教えていただき、貴重な経験になりました。
本当にありがとうございました。

お礼日時:2010/01/29 16:35

ActivePresentation.SaveAs Filename:="C:\power.jpg", ・・・


(下矢印)
myPre.SaveAs Filename:="C:\power.jpg", ・・・
に変えてみるとか?
    • good
    • 1
この回答へのお礼

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

お礼日時:2010/01/29 13:42

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

    • good
    • 1
この回答へのお礼

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

お礼日時:2010/01/29 13:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!