■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#147-3VBからExcelを起動後、マクロの自動実行まる2003-07-31(木) 16:06
     #148-3RE#147:VBからExcelを起動後、マクロの自動実行藤代千尋2003-07-31(木) 17:13
     #149-3RE#148:VBからExcelを起動後、マクロの自動実行まる2003-07-31(木) 17:58
     #150-3RE#149:VBからExcelを起動後、マクロの自動実行藤代千尋2003-07-31(木) 21:30
     #186-4RE#150:VBからExcelを起動後、マクロの自動実行まる2003-08-04(月) 15:53
     #188-3RE#186:VBからExcelを起動後、マクロの自動実行藤代千尋2003-08-04(月) 16:05
#147-3
VBからExcelを起動後、マクロの自動実行
お世話になります。

VBからExcelを起動させ、Auto_Open()を実行させようとしています。
Auto_Openなので、ExcelのマクロのあるBookを起動させたらいいのかな、
と思ったのですが、ただ起動するだけでは自動実行はできないらしく、
次の1文を追加しました。

        Set ObjExl = New Excel.Application
        ObjExl.Visible = True
        ObjExl.Workbooks.Open App.Path & "\ChangeT.xls"
        ObjExl.ActiveWorkbook.RunAutoMacros xlAutoOpen ←追加行

ところが、起動するのはいいのですが、マクロのAuto_Openが
無限ループにはまってしまいます。
(DisplayAlertsをFalseにしているので、エラーにこそなりませんが…)
Auto_Open中にフォームを表示させようとShowメソッドがあるのですが、
どうやらそこでダメみたいです。

VBの操作(指示方法とか)でなんとかなるでしょうか?
それとも、マクロを変更しないとダメでしょうか?
#148-3
RE#147:VBからExcelを起動後、マクロの自動実行
VB から開いた場合、Auto_Open() は実行されませんが、Workbook_Open イベントは発生
しますので、そちらに書く手もあります。

ユーザーフォームを Show するだけでは無限ループにはなりません。コードのどこかが
おかしいです。それを見直してください。(^^)
#Auto_Open のコードを載せてもらってもイイです。
#149-3
RE#148:VBからExcelを起動後、マクロの自動実行
藤代千尋さま、ありがとうございます。
Workbook_Openだと、ブックを開くだけで実行してくれました!
でも、やっぱり現象は Auto_Open と同じでした(>_<)
(すみません、デバッグしていて気付いたのですが、ループではなくて、
動作がとまってました。)

Workbook_Open、Auto_Open とも同じ処理の仕方にしてますが、

Private Sub Workbook_Open()  ←-----------------------●
    UserForm.Show  ←---------------------------------■
    帳票コピー(ここはその後の処理をさせています)
End Sub

VBから起動でフォームは表示されるのですが、うんともすんとも言ってくれないので
ブレイクしてデバッグしてみると、おそらく■のところで止まってたみたいで、
[F8]で進めてみれば、●に戻ってしまい、また■の処理・・・。
「アプリケーション定義またはオブジェクト定義の・・・エラーです」とでました。
当たり前なんですが(--;

あと、これが一番問題なのかもしれないですが…、フォームにはなんの処理もないんです。
「帳票コピー」の処理に時間がかかるため、実行してますよ〜と表示してるだけです。

なんだか的確でない説明のような気がしてきました…。
こんな情報で何かわかるでしょうか?
自分でもいろいろ試してみますが、よろしくお願いします。
#150-3
RE#149:VBからExcelを起動後、マクロの自動実行
> 「アプリケーション定義またはオブジェクト定義の・・・エラーです」とでました。

Excel は、慣れた人でも「なぜ、それがエラーになる! しかもエラー情報が意味なし!」
というのが出てきます。原因が分かれば、「ああ、なるほど」となるんですけど、見つける
まではかなり不思議ですね。
#Excel の「癖」みたいなもんでしょうね。

帳票コピーに、そういうのがあるのだと思います。コードを載せてみませんか?(^^)
#186-4
RE#150:VBからExcelを起動後、マクロの自動実行
藤代千尋さま、ありがとうございます。お礼が遅くなってしまい、すみません。
 
> 帳票コピーに、そういうのがあるのだと思います。コードを載せてみませんか?(^^)
帳票コピー自体も、色んな処理(ファイルを探したり、Excelのシートをコピーしたり…)の
集合体になっています。載せるのはいいのですが、たくさんありすぎて…(--;

で、どうしてもフォーム表示から先に進んでくれないので、Workbook_Open に
フォーム表示、帳票コピーの処理と一緒にするのをやめました。
Workbook_Open にはフォーム表示のみ、フォームの Activate イベントに帳票コピーの処理、
とすると、意図するように動いてくれました。
ただ、問題自体が解決したわけではないので不安ですが…。
#188-3
RE#186:VBからExcelを起動後、マクロの自動実行
あ、そうだ。モーダルでのフォーム表示だと、そこで処理が止まります。次に進みません。(^^;
  Userform1.Show vbModeless
で次に進みます。

Form_Activate で処理するのは、悪くないですね。つまり、「フォームが印刷のための処理を行い、
その間、状況を表示する」という形ですから。(^^)

「処理と表示は分けるべきだ!」なんてのがあるので本当は分けたいところですが、そうすると、
  Userform1.Show vbModeless
  帳票コピー Userform1  '' 状況の表示先を渡す
  Unload Userform1
とか、処理と表示をつなげるためのコードが必要になります。ちょっと面倒ですね。(^^;
#その面倒さでも、処理と表示を分けた方がいいとか、まあ、作成方針の話で。
 つなげ方も、直接つなげるのではなく、イベント経由にしたりとか。
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)