• 締切済み

Excelマクロで終了

Excel2007 でマクロで教えて下さい。 今、ExMac1(book) と言うマクロから、ExMac2(book)のサブルーチンを起動しています。 呼ばれたExMac2の最後で、ExMac2を終了する命令を記述すると、全てのマクロが終了して しまいExMac1に制御が戻ってきません。 これは仕様かと思い、呼び出されたExMac2からExMac1を終了させてExMac2の続きを と思いましたが、やはり全てのマクロが終了していまいます。 ちょっと分かりずらい説明で申し訳ありませんが、どうにかして指定したbookマクロだけを 終了させたいのですが、ご教授ください。  呼び出す側  ExMac1 : Application.Run "'ExMac2.xlsm'!main_Click" : end  呼び出される側  ExMac2 sub main_Click : Workbooks("'ExMac1.xlsm'").Close SaveChanges:=False ....(1) msgbox "続き" ....(2) : end  (1)が実行されると、全てのマクロが終了され(2)が  実行されません。

みんなの回答

  • yorozu_ya
  • ベストアンサー率54% (76/140)
回答No.1

> 呼ばれたExMac2の最後で、ExMac2を終了する命令を記述すると、全てのマクロが終了して > しまいExMac1に制御が戻ってきません。 Sub の最後は End Sub です。 ただの End を使ってはいけません。 ただの End は全てのマクロを終了させてしまいます。

関連するQ&A

  • エクセル マクロで自動実行と終了について

    エクセルで作ったマクロを自動実行・自動保存・自動終了したいので、下記のような 記述のマクロをつくり、Windowsのタスク処理で1回/日実行させようとしています。 ----<ここから>------------------------------------ Sub Auto_Open()    :   :   Workbooks("ekuseru.xls").Close SaveChanges:=True End Sub ----<ここまで>------------------------------------ 質問その1  マクロを編集したい場合はどうすればいいのでしょう?  そのBookを開くとマクロが動き出し、保存した上で終了してしまいます。  マクロ無効でBookを開くと「ツール」⇒「マクロ」⇒「マクロ」で「編集」はクリッ  クできないようになってます。 質問その2  マクロが終了するとき、Bookは閉じますがエクセル自体は閉じません。  (意味通じますか?)  エクセル自体を閉じるにはマクロの記述はどうすればいいのでしょう? 以上、よろしくお願いします。

  • Excel2010のマクロについて教えてください。

    今下記のマクロ Sub SHUURYOU() ActiveWorkbook.Save Application.Quit End Sub をabc.xlsmと言うシートに書き込みボタンに貼り付けました。 又他のBookにあるdef.xlsmと言うシートにも貼り付けました。 それぞれ単独で開き書き込みをしてマクロボタンを押せば保存して終了します。 しかしabc.xlsmとdef.xlsmが同時に開いていると一方のマクロを実行すると両方ともクローズしてしまいます。 このマクロを単独のシート(book)だけに有効にするにはどのようにマクロを書けばよいのでしょうか。 教えてください。

  • Excel 終了マクロ

    Excel で終了マクロを作ってみましたが、途中で次のメッセージが出てしまいます。 「実行時エラー'424' オブジェクトが必要です」 どう直したらよいか、教えて下さい。よろしくお願いします。 Sub Macro1() With ActiveWorkbook If MsgBox("終了します") = vbOK Then Set dbsTemp = Nothing ActiveWorkbooks.Close End If End With End Sub

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • エクセル マクロ こんな事出来ますか?

    エクセル2010を使っています。 ボタンクリックでAと言うファイルをオープンさせているのですが、使うシーンで元々開いていたり、閉じていたりします。 それで、目的のファイルが開いていた場合は次の動作に移りたいと思います。 現在のマクロは以下の様なものです、これでもちろん動作しています。 Sub ボタン15_Click() Workbooks.Open "目的のファイルの場所" Windows("A.xlsm").Activate Sheets("Sheet4").Select Range("aa3").Select End Sub Aのファイルが開いていない場合、Aを開く。 Aのファイルが開いている場合 Windows("A.xlsm").Activate を実行したいと言う事です。 詳しい方、よろしくお願い致します。

  • エクセルVBAで非アクティブブックのRow取得

    先ほどの質問の文章がおかしかったので再度質問させていただきます。 非アクティブブックの最終行のRowを取得するマクロが xls形式のファイルだと動いていたのですが、xlsm形式に変更後、エラーになってしまいました。 これは仕様の変更によるものなのでしょうか? Activeteせずに対処する方法があれば教えて頂きたいです。 マクロを実行しているのは"2.xlsm"で、 このファイルがアクティブの状態で "1.xls"が非アクティブです。 "2.xls"のファイルだとエラーにならないのに "2.xlsm"のファイルだとエラーになってしまいます。 Sub ボタン1_Click() Dim 最終行 As Long 最終行 = Workbooks("1.xls").Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row MsgBox 最終行 End Sub

  • 複数起動してるエクセルを一括で保存して閉じたい

    使用しているのはエクセル2010です。 会社で使用しているソフトで右クリックメニューから エクセルで出力するという項目があり それを選択するとbook1、別のも出力するとbook2と 出力されていきます。 (上部に表示されている文字はbook1のみで拡張子はまだ付いていない?) タスクバー上にはそれぞれが独立して表示されていて エクセルを閉じようと右上の(チェック)ボタンを押しても book1ならbook1、book2ならbook2のみのエクセルが終了します (book1,2を出力して開いていたとしてbook1のエクセルを閉じてもbook2は閉じない) 毎回10個くらい一気に出力したあと、1つず保存して閉じているのですが これを簡単にできる方法は何かありませんでしょうか? 見よう見まねでマクロを下記マクロを作ってみましたが 思うように行かず Sub closeexcel() Workbooks("Book1").Close SaveChanges:=True Workbooks("Book2").Close SaveChanges:=True End Sub さらにUWSCというソフトを使ってみて マウスとキーボードの動きを記録してみましたが これも上手くいきませんでした・・・ もし何か良い案ありましたら ご教示いただけるよう よろしくお願いいたします・・・・・

  • 同じマクロ名でも、違うモジュールならエラーにならな

    同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。

  • エクセルのマクロについて

    お世話になります。エクセル2007のマクロについてですが、「A」というBOOKがありその中の任意のセルをクリックするとハイパーリンクで「B」というBOOKが開くようになっています。 ここで「B」が開いた時点で自動的に「A」を保存しないで終了させたいのですが、マクロの組み方がわかりません。 Sub Sample1() Workbooks("BookA.xlsx").Close End Sub と記述するとBook Aが閉じるのは調べてわかったのですが、ハイパーリンクでBが開いた時点でこのマクロを動かすようにするにはどうしたらいいのでしょうか?何か別の方法があるのでしょうか? 宜しくお願いします。

  • マクロに関する質問です。

    現在、会社でエクセル2010を使用しています。 マクロはほぼ素人なのですが、色々調べながら使用していました。 先日、フォームコントロール(※開発>挿入>左上のボタン)を設置することで、ワンクリックでマクロを実行出来ることを知り、早速挑戦してみたのですが、下記(画像1)のようなエラーが出てしまい、マクロが実行されません。 [エラーメッセージ] マクロ'\\作業中のファイル.xlsm!マクロ名'を実行できません。このブックでマクロが使用できないか、またはすべてのマクロが無効になっている可能性があります。 「表示タブ>マクロ>マクロの表示>実行」 の手順では実行できたので、マクロには問題ない?のかと。 現在、会社の共有サーバー上にあるブックで作業をしているため、一旦自分のデスクトップにコピーしてからボタンを作ってみたら実行できました。 共有サーバー上に保存されているブックではボタンは実行できないのでしょうか? それとも、なにかしらの設定ミスでしょうか? ローカルで作業をするか、ボタンの設置を諦めれば仕事に支障はないのですが、、、 手があるのでしたら何とかしたいと思っております。 マクロ等に詳しい方がいらっしゃいましたら、ご教授ください。 よろしくお願いいたします。 ちなみに、下記がマクロの中身です。 B4:B303にあるデータを外部のテキストファイルに出力して保存するといったマクロです。 Sub Check() If Cells(4, 1) = Empty Then MsgBox ("タイトルがありません") Else Range("B4:B303").Select Selection.Copy Workbooks.Open Filename:="C:\Documents and Settings\Admin\デスクトップ\アニメ\マルチデバイス関連\チェックリスト\動画チェック.txt" Windows("動画チェック.txt").Activate Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.Save Windows("動画チェック.txt").Close savechanges:=False Windows("動画チェックシート.xlsm").Activate Range("A4").Select End If End Sub

専門家に質問してみよう