ここから本文です

【VBA】OnTimeでExcel.Applicationオブジェクトを引数として渡す方法を教えてくだ...

kar********さん

2014/7/2719:34:01

【VBA】OnTimeでExcel.Applicationオブジェクトを引数として渡す方法を教えてください。

下記のように、Excel.Applicationオブジェクトを引数とするプロシージャをOnTimeで指定しました。
しかし、期待どおりに動作してくれません。

' ■OnTimeを実行するプロシージャ
Sub TestSub()
Dim objExcel As Object
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open ThisWorkbook.path + "\" + ブック名

Call Application.OnTime(起動時間, _
"'起動するマクロ""" & objExcel & """'")
End Sub

' ■規定の時間に起動したいプロシージャ
Sub 起動するマクロ(objExcel as Object)
' /// 処理 ///
End Sub


【期待すること】
起動時間に、起動するマクロが実行される

【実際に起こること】
起動時間に、下記のエラーが発生する
「マクロ"・・・"を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。」


引数の型をExcel.Applicationオブジェクト以外にすると(例えば、Date)、正常に動作します。
今回はExcel.Applicationオブジェクトを引数としたいのですが、どのように実装すればよいのでしょうか?

閲覧数:
1,330
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

tra********さん

2014/7/2719:54:37

こんな回避策でどうでしょうか?

Dim objExcel As Object
Sub TestSub()
Dim 起動時刻 As Date, ブック名 As String
ブック名 = "Book1.xlsx"
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Open ThisWorkbook.Path + "\" + ブック名
起動時刻 = Now + TimeValue("00:00:05")
Application.OnTime 起動時刻, "起動するマクロ"
End Sub

' ■規定の時間に起動したいプロシージャ
Sub 起動するマクロ()
MsgBox "テストのために,表示してます " & objExcel.Name
' /// 処理 ///
End Sub

質問した人からのコメント

2014/7/28 21:17:52

ご回答ありがとうございました!
グローバルな宣言とすることで、回避できました。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる