エクセル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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
PowerShellを使って関連付けら...
-
「パス名が無効です」の発生原因
-
VBから参照できないCのDLLを使...
-
fgets関数のEOFの扱い方について
-
batファイルでレジストリキーの...
-
自身のファイルのコピーを作成...
-
「複数の選択範囲に対して実行...
-
エラー:インクルードファイル ...
-
Adobeのプレミアプロの書き出し...
-
Returnに対するGoSubがありません
-
アクセスのクエリでコンパイル...
-
VBでファイルが開かれているか...
-
Access2010 コンパイルエラー...
-
VBA ExecuteExcel4Macro 型が一...
-
エクセルファイルが開けない
-
VB スクリプトで
-
FF11が強制終了に・・・
-
VISIOは上位互換のはずなのにフ...
-
【COBOL】read文でエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
gccを行ってもexeファイルが生...
-
VBでファイルが開かれているか...
-
「パス名が無効です」の発生原因
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
PowerShellを使って関連付けら...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
FTPの送信結果を検知したい
-
NAS上のファイルの使用中が解除...
-
VBA ExecuteExcel4Macro 型が一...
-
access テキストボックスの値取得
-
EXCELのVBAでWORDが開いてある...
-
すでにファイルが開かれている...
-
EXCELVBAでONEDRIVE上への保管...
-
Excelファイルのマクロによる排...
-
OUTLOOK VBA 指定フォルダ内の...
-
エクセルマクロでエラーの原因...
-
Adobeのプレミアプロの書き出し...
おすすめ情報