• ベストアンサー
  • すぐに回答を!

Sub Auto_Open() 実行されない

Excel2003VBAについて教えてください。 あるBookから、VBAの”Workbooks.Open”で別のブックを開くように作ってあるのですが、開かれるBookのほうに”Sub Auto_Open()”で特定のシートをアクティブにするように作っています。 普通にBookを開くとSub Auto_Open()は実行されますが、”Workbooks.Open”では実行されません。 ”Workbooks.Open”で開いたときに、特定のシートがアクティブになればそれでよいのですが。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数6524
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.4

呼び出し元のブックではWorkbook_Openを使用しているのに、何故呼び出される側ではAuto_Openなのか? 呼び出される側もWorkbook_Openに Sheets("Sheet2").Select で良いと思うのですが。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お答えありがとうございます。 Workbook_Openを知りませんでした。 勉強不足です。大変参考になりました。

関連するQ&A

  • Auto_Openマクロ

    Excel2003のマクロで、 Sub Auto_Open() ActiveSheet.DisplayAutomaticPageBreaks = True End Sub としているのですが、起動時に開くシートにしか適用されません。 ページが増えていくのでブック内の全シートに適用するにはどうしたらいいでしょうか?

  • エクセル VBA 「Sub Auto_Open()」 について

    エクセル2003を使用しています。 VBAで、下記のように、起動時にメッセージを表示させているのですが、 表示されたダイアログの「OK」を押さないと、ダイアログが消えないのと同時にエクセルの編集ができません。 --------------------- Sub Auto_Open() MsgBox "******" End Sub --------------------- このダイアログを、指定した時間で、自動で消えるようにできるのでしょうか? ご教授いただけます方、どうぞ、よろしくお願い申し上げます。m(_ _)m

  • VBA auto_openでApplication.onKeyを実行できない

    お世話になります。 表題のとおり、Excel起動時に、上書き保存や名前を付けて保存等の 機能をショートカットから実行できなくするように、auto_openで 処理をさせたいのですが、実行時にエラーが出てしまいます。 下記にそのソースを記述します。 Private Sub Auto_Open() Application.OnKey "F12", "" End Sub 正確には、ショートカットを無効にするタイミングはブック自体を 開いてから後でも構わないのですが、やはり同じようにエラーが 出ます。 どうしてエラーになるのか、どうすれば正常に動作するのか 教えてください。 以上、宜しくお願い致します。

その他の回答 (3)

  • 回答No.3
  • onlyrom
  • ベストアンサー率59% (228/384)

>普通にBookを開くとSub Auto_Open()は実行されますが、”Workbooks.Open”では実行されません。 それは仕様です。 で、そういう処理をしたいときはふつうは Sub Auto_Open ではなくて ThiwWorkbookモジュールの、Workbook_Openイベントに書きます。 '--------------------------------- Private Sub Workbook_Open()   Sheets("Sheet3").Select End Sub '---------------------------------- 以上。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お答えありがとうございました。 大変参考になり、助かりました。

  • 回答No.2

Auto_Open は手動で開いた場合は実行されますがマクロで開く場合は実行されません。 他のファイルからマクロで開くときに Auto_Open を実行する場合は RunAutoMacros を使います。 サンプルです。     Sub test()     Workbooks.Open "Test.xls"     Workbooks("Test.xls").RunAutoMacros xlAutoOpen     End Sub

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お答えありがとうございました。 大変参考になりました。

  • 回答No.1
  • keirika
  • ベストアンサー率42% (279/658)

アクティブにしたいシート名をSheet3とします。 Workbooks.Openの後にActiveWorkbook.Sheets("Sheet3").Activate を追加してはどうでしょうか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お答えありがとうございました。 大変参考になり、助かりました。

関連するQ&A

  • アクセスでauto_openは使えない?

    エクセルの場合は、ブックを開いたと同時にマクロを実行させたい時は、 auto_openと言うマクロを標準モジュールに作れば可能ですが、 アクセスVBAの標準モジュールに、auto_openというプロシージャーを作って、 アクセスを再起動しても何も起こりません。 アクセスにおいて ファイルの起動と同時にマクロを実行させたいのなら、 どこかのフォームのOpenイベントに実行させたいコードを記載して、 起動時の設定で、そのフォームを選択するしかないのでしょうか?

  • Auto_OpenとWorkbook_Openの違いは?

    Auto_OpenとWorkbook_Openの違いは何でしょうか? マクロから開かれた場合、Workbook_Openしか実行されないことは認識していますが、それ以外に異なる点は無いのでしょうか? Workbook_OpenやWorkbook_BeforeCloseはブックが最初に開かれたり閉じられたりすると認識していますが、最近このマクロを記述しているブックをウィンドウのバックに置いて、他のブックからこのブックにしようとするとやたら時間がかかるような気がしました。 Workbook_OpenやWorkbook_BeforeCloseを削ったら早くなったような気がしましたが、これは単なる気のせいでしょうか? よろしくお願い申し上げます。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • VBA 実行エラーの原因

    次のコードは、アクティブブックのSheet2を、Book222のSheet1の後ろにコピーします。 とあって、実際Book111、Book222を開いて実行するも、 実行時エラー9:インデックスが有効範囲にありませんがでます。 どこが悪いかさっぱりわかりません。教えてください。 Sub Sample05() Worksheets"Sheet2").CopyAfter:=Workbooks"Book222").Worksheets("Sheet1") End Sub

  • エクセル タスクスケジューラ使用時の二重起動について

    自動で起動するブック(未保存)を、別のブックのVBAを利用して 保存するため以下のように設定しました。 --------------------------------------------- sub auto_open() Dim sFilName As String sFileName =d:\test\test.xls Workbooks("Book1").Active ActivWorkbook.SaveAs sFileName ActiveWorkbook.Close Application.Quit End Sub (急いで入力しましたので単純なミスはご容赦ください。) ------------------------------------------- このプロシージャを手動にて使用したところ問題なく 動いたのですが、夜中の作業のためWindowsの機能である タスクに登録したところ、先に起動している「Book1」のエクセルとは 別のエクセルが起動してしまい、 Workbooks("Book1").Active  の行で でエラーとなってしまいます。 つまり「ウィンドウ(W)」でブックの切り替えができない状態です。 なんとかこの現象を回避できないでしょうか? もしくは別の方法があればお願いします。 ちなみに、VBSでエクセルを起動してプロシージャを実行しようとも しましたが、このときはプロシージャが動きませんでした。 よろしくお願いします。

  • Excel2007で2003のVBAが実行時エラー1004

    普段は事務員の非プログラマーです。 Excel2000,2003で動いていたマクロを2007でも動くようにしてほしいと言われて頑張っているのですが、どうすればいいのか見当がつきません(*_*) どうぞ知識者の皆様のお知恵をお貸しください。 Excel2003で読み取りのみのVBAのファイルで、ボタンを押すとマクロが実行され、別CSVファイルを指定しVBAのファイルの別シートとして読み込みます。次に別txtファイルを指定してVBAのファイルの別シートに読み込みます。最後にその2つのシートの必要な個所のみ結合して、新しいcsvファイルとして保存する処理をしています。 Excel2007でこれを実行すると、csvファイルを読み込むときに次のようなエラーがでます。 「実行時エラー'1004':移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー]コマンドと[貼り付け]コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 マクロの中身はこのような感じです。 エラーは最終行の「ActiveSheet~」ででています。 Sub openExcel() 'Step1 open excel Dim ExcelFileOpen As String ExcelFileOpen = Application.GetOpenFilename(FileFilter:="Excel Files,*.csv") If ExcelFileOpen <> "False" Then Workbooks.OpenText Filename:=ExcelFileOpen ActiveSheet.Move After:=Workbooks(ThisWorkbook.Name).Sheets(1) どうぞよろしくお願いいたします(_ _)

  • Auto_Open シフトキーの無効

    マクロを有効時にシフトキーを押しながらマクロを有効にするを押すと Auto_Openの処理が動きません(仕様)  逆に、シフトキーを押されてもAuto_Openの処理等のマクロを実行させる方法はありますか? あれば、教えてください。 使用するエクセルは、Excel2003以上で使用します。

  • エクセルで上書保存時に自動実行するマクロって?

    Excel2000です。 ブックを開いた時に自動実行させるには、 Sub Auto_Open() で、作成すれば良いですが、 上書保存した際に、マクロを自動実行させるにはどうすれば良いのでしょうか?

  • Openメソッドについて

    ブックAのSheet1にあるセルのデータをブックBのSheet1のセルにコピーするために、以下のようにOpenメソッドを使ったVBAを記述してみたのですが、エラーコード1004「指定されたファイルが存在しません」のようなエラーメッセージが出てきました。Openメソッドが使われている例を見ているとどうやらブックのあるフォルダを指定しているような感じがするのですが、Openメソッドは具体的に該当のブックのある場所を指定しなくてはならないのでしょうか??(私がVBAを記述するにあたり参考にしたインターネットのVBAを紹介するページでは、ブックのある場所を指定せず、私が記述したように直にブック名を入力していました。) お忙しい中申し訳ないのですが、どなたかご教授いただけると、とても嬉しいです!よろしくお願いいたします。 Sub ブックAのデータをブックBに() With Workbooks.Open("ブックA.xlsx")  .Sheets("Sheet1").Range("E8").Value = _ ThisWorkbook.Range("C2").Value End With End Sub

  • VBA Workbooks.open

    ブックを開くコマンド × Workbooks("filename.xls").open ○ Workbooks.open filename:="filename.xls" 何故下なのですか?ワークブックコレクションの中から特定のブックを指定し開くなら、上の構文にした方がワークシートコレクション等と構文表現を統一出来ます。 現にブックを閉じるコマンドは Workbooks("filename.xls").close です。何故ブックを開くコマンドだけ別表現なのですか?