■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
|
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(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
#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
まる2003-07-31(木) 16:06
お世話になります。 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の操作(指示方法とか)でなんとかなるでしょうか? それとも、マクロを変更しないとダメでしょうか?
藤代千尋2003-07-31(木) 17:13
VB から開いた場合、Auto_Open() は実行されませんが、Workbook_Open イベントは発生 しますので、そちらに書く手もあります。 ユーザーフォームを Show するだけでは無限ループにはなりません。コードのどこかが おかしいです。それを見直してください。(^^) #Auto_Open のコードを載せてもらってもイイです。
まる2003-07-31(木) 17:58
藤代千尋さま、ありがとうございます。 Workbook_Openだと、ブックを開くだけで実行してくれました! でも、やっぱり現象は Auto_Open と同じでした(>_<) (すみません、デバッグしていて気付いたのですが、ループではなくて、 動作がとまってました。) Workbook_Open、Auto_Open とも同じ処理の仕方にしてますが、 Private Sub Workbook_Open() ←-----------------------● UserForm.Show ←---------------------------------■ 帳票コピー(ここはその後の処理をさせています) End Sub VBから起動でフォームは表示されるのですが、うんともすんとも言ってくれないので ブレイクしてデバッグしてみると、おそらく■のところで止まってたみたいで、 [F8]で進めてみれば、●に戻ってしまい、また■の処理・・・。 「アプリケーション定義またはオブジェクト定義の・・・エラーです」とでました。 当たり前なんですが(--; あと、これが一番問題なのかもしれないですが…、フォームにはなんの処理もないんです。 「帳票コピー」の処理に時間がかかるため、実行してますよ〜と表示してるだけです。 なんだか的確でない説明のような気がしてきました…。 こんな情報で何かわかるでしょうか? 自分でもいろいろ試してみますが、よろしくお願いします。
藤代千尋2003-07-31(木) 21:30
> 「アプリケーション定義またはオブジェクト定義の・・・エラーです」とでました。 Excel は、慣れた人でも「なぜ、それがエラーになる! しかもエラー情報が意味なし!」 というのが出てきます。原因が分かれば、「ああ、なるほど」となるんですけど、見つける まではかなり不思議ですね。 #Excel の「癖」みたいなもんでしょうね。 帳票コピーに、そういうのがあるのだと思います。コードを載せてみませんか?(^^)
まる2003-08-04(月) 15:53
藤代千尋さま、ありがとうございます。お礼が遅くなってしまい、すみません。 > 帳票コピーに、そういうのがあるのだと思います。コードを載せてみませんか?(^^) 帳票コピー自体も、色んな処理(ファイルを探したり、Excelのシートをコピーしたり…)の 集合体になっています。載せるのはいいのですが、たくさんありすぎて…(--; で、どうしてもフォーム表示から先に進んでくれないので、Workbook_Open に フォーム表示、帳票コピーの処理と一緒にするのをやめました。 Workbook_Open にはフォーム表示のみ、フォームの Activate イベントに帳票コピーの処理、 とすると、意図するように動いてくれました。 ただ、問題自体が解決したわけではないので不安ですが…。
藤代千尋2003-08-04(月) 16:05
あ、そうだ。モーダルでのフォーム表示だと、そこで処理が止まります。次に進みません。(^^; Userform1.Show vbModeless で次に進みます。 Form_Activate で処理するのは、悪くないですね。つまり、「フォームが印刷のための処理を行い、 その間、状況を表示する」という形ですから。(^^) 「処理と表示は分けるべきだ!」なんてのがあるので本当は分けたいところですが、そうすると、 Userform1.Show vbModeless 帳票コピー Userform1 '' 状況の表示先を渡す Unload Userform1 とか、処理と表示をつなげるためのコードが必要になります。ちょっと面倒ですね。(^^; #その面倒さでも、処理と表示を分けた方がいいとか、まあ、作成方針の話で。 つなげ方も、直接つなげるのではなく、イベント経由にしたりとか。
このページと関連する記事:
#376-4Excelをマクロを有効にして起動するには?2003-05-15(木) 00:15#37412-0Excel起動後のタイトルバー変更時にエラー2001-01-22(月) 10:14
#44047-0マクロを含むエクセルファイルのOPEN2001-06-15(金) 14:47
#18204-0VBからExcel起動後、最初に通る関数は?2001-01-29(月) 09:48
#44173-0マクロを無効にしファイルを開きたい2001-06-19(火) 09:25
#9402-0Excelのボタンにコメントをつける事は可能ですか?2000-04-07(金) 12:28
#31363-0Excelマクロのシートコピーについて2000-10-07(土) 18:51
#4033-2VBからエクセルの操作する方法2002-01-18(金) 17:35
#2282-2再度:VBからEXCELを開く2001-11-30(金) 19:57
#1903-0VBからExcelのマクロを呼ぶ方法1999-09-17(金) 09:38
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。