• 締切済み

特定のブックにのみ作動するマクロを教えてください。

ブックAに指定時間で作動するマクロを入れました。 ブックAしか開いていないときは作動するのですが、同時にブックBを開いて、ブックBがアクティブの場合に、そのマクロがブックBに対して作動してしまいます。 ブックが複数開いていても、ブックAにのみマクロを作動させる方法をどなたかご教授願います。 ********* ■ブックAのThisWorkBook Private Sub Workbook_Open() Application.OnTime TimeValue("00:15:00"), "sakujyo" End Sub ■標準モジュールのModule1に"sakujyo"を置いています。 よろしくお願い致します。

みんなの回答

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

"sakujyo"で、 ThisWorkbook とか Workbooks("ブックA")とか明記していないのではないでしょうか。 [XL2002]Q&A (VBA Range オブジェクト編) http://support.microsoft.com/kb/401698/ja

cabin240
質問者

お礼

ありがとうございました。うまくいきました。

関連するQ&A

  • エクセルVBA 10分後にエクセル自動終了&カウン

    どなたかご教授お願い致します。 ・エクセルの当該ブックを、起動10分後に自動終了(保存しない)させる ・開いている間は、10分のカウントダウンを「分:秒」でA1セルに表示する 以上を実行したいのですが、VBAは全く素人ですので、うまくいきません。 見よう見まねで、以下のようなことをしましたが、結局ダメでした。 何卒、よろしくお願い致します。 ThisWorkbook Workbook Open Private Sub Workbook_Open() test01 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub 標準モジュール Module1 Sub 終了() ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("バックアップ").Range("A1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:01"), "test01" End Sub

  • EXCELのApplication.OnTimeは予約のことですか?

    こんにちは、VBAの初心者です。 Application.OnTimeとは目覚し時計をセットするみたいに 時間になったら実行させたいタスクの「予約をする」ことですか。 ---------------- 例えばThisWorkbookに Sub ThisWorkbook_Open()  Application.OnTime TimeValue("09:00:00"), "A"  Application.OnTime TimeValue("10:00:00"), "B"  Application.OnTime TimeValue("11:00:00"), "C" End Sub 標準モジュールに Sub A()  Beep End Sub Sub B()  Beep End Sub Sub C()  Beep End Sub --------------- と書けば、Workbookを開いた時に「3つのタスクが予約された」と考えて良いのでしょうか。 その場合、11時前にEXCELを終了させたら 最後のタスクは自然消滅するのでしょうか、それともエラー扱いになるのでしょうか。

  • Workbook_openでマクロが実行されない

    ExcelのVBAで起動時にマクロを実行させたいのですが、 「メソッドまたはデータメンバが見つかりません。」 とのエラーが出て実行出来なくて困っています。 プログラム内容は *ThisWorkbook* Private Sub Workbook_Open() Module1.tasu End Sub *標準モジュール(Module1)* Private Sub tasu() Dim a As Byte a = 3 Range("a1") = a End Sub 使用しているソフトはExcell2003、VB6.5です。 よろしくお願いします。

  • エクセルでブックを閉じたときマクロを終了させるには

    現在、以下のようなマクロを組んでいます。 --------------------------------------- Dim 利用制限時間 As Integer Private Sub Workbook_Open() If Not ThisWorkbook.ReadOnly Then 利用制限時間 = 10 '分 + 起動時刻:Now 警告時刻 = Now + 10 * TimeValue("00:01:00") '分に変換 Application.OnTime 警告時刻, "ThisWorkbook.利用制限ご注意" End If End Sub Private Sub 利用制限ご注意() 警告文 = "共有ファイルを開いて" + CStr(利用制限時間) + "分経過しました。" + vbCrLf 警告文 = 警告文 + "使用しない場合は終了してください。" MsgBox 警告文, vbCritical, "共有ファイルの利用について" Workbooks("共有ファイル.xls").Close End Sub --------------------------------------- しかし、10分たたずにブックのみ終了し、エクセルのみの起動をしていても10分後には、「共有ファイルを開いて10分経過しました」と出てきます。 エクセルを終了させればよいのでしょうが、ブックを終了させただけでマクロも同時に終了できないでしょうか?

  • エクセル ブック(マクロを含む)を保存してとじると、また開きます。

    ブックに保護をかけた状態で保存してあります。 共有状態にあり、マクロを有効にしてもらいたいので、 (1)開くときに保護解除 (2)保存のときに、保護をかけて保存後、(まだ閉じるとは限らないので)保護解除 ということをやろうとし、以下のように書きました。 エクセルごとではなく、このファイルのみ終了しようとすると、 開いた後と上書保存後に保護を解除する為、 ファイルを終了する時には必ず「変更を保存しますか?」と訊かれ、 その時に「はい」を選択すると、一度はそのファイルが終了するのですが、 すぐに マクロを含むファイルを開くときに出るメッセージ「セキュリティ警告マクロ マクロ有効 マクロ無効 詳細」が出て、また開こうとします。 保存「いいえ」を選択すると、普通に終了します。 エクセルごとを終了すれば保存「はい」にしても、普通に終了します。 このファイルのみ終了する時、保存の確認で、「はい」を選び、普通に終了するには、何を直したらよいでしょうか? その前に、根本的に間違ってたりしますでしょうか・・・。 よろしくお願いします。 ThisWorkbookに、 Private Sub Workbook_Open() ActiveSheet.Unprotect Password:="(パスワード)" End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveSheet.Protect Password:="(パスワード)" Application.OnTime Now, "保護解除" End Sub 標準モジュールに、 Sub 保護解除() ActiveSheet.Unprotect Password:="(パスワード)" End Sub

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • エクセルVBA

    VBAの素人です。 以下のようなVBAを実行しようと、何とか形にしました。 単独のBOOKではうまくいくのですが、同時に他のBOOKを開くと 「インデックスが有効範囲にありません」とエラーになります。 エラー箇所は、With Sheets("Sheet1").Range("B1")部分です。 修正をご教示頂ける方、何卒よろしくお願い致します。 全くVBA無知なのにすみません。 Private Sub Workbook_Open() test01 test02 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub Sub 終了() Application.OnTime Now + TimeValue("0:00:02"), "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("Sheet1").Range("B1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:02"), "test01" End Sub Sub test02() With Sheets("Sheet1").Range("B2") .Value = Time .NumberFormatLocal = "mm:ss" End With End Sub

  • 【Excel VBA】 ブッククローズ時の動作について

    環境: WindowsXP Office2003 ThisWorkBookモジュールに、 Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ブックの保存を要求しない ThisWorkbook.Saved = True End Sub と記述しているのですが、保存の有無を聞かれます。 しかしながら、ブックにより聞かれない場合もあります。 原因として考えられるのは、どのようなことでしょうか?

  • エクセルのブックを閉じるマクロについて

    エクセルのブックAとブックBが開いている状態で、 ブックAのボタンに登録して実行すると、ブックAのみ閉じる、 というマクロを作りました。(下部にコードを記載します) このマクロは、2つのブックが開いていると正常に稼働するのですが、 ブックが1つしかない場合、実行時エラーが出てしまいます。 (ブックAのみ開いた状態でこのボタンを押してもエラーなく閉じたい) 実行時エラーが出ないようにするにはどうすれば良いか、 おわかりの方がいらっしゃいましたら教えて下さい。 どうぞよろしくお願い致します。 Sub このブックのみ閉じる() Dim wa As String wa = "ほかに無い" Dim wb As Workbook For Each wb In Workbooks If wb.Name <> ThisWorkbook.Name Then wa = "ほかにあるよ" End If Next If wa = "ほかに無い" Then Application.DisplayAlerts = False Application.Quit '終了予定 End If Range("D2").Select Selection.ClearContents ThisWorkbook.Close SaveChanges:=False End Sub

  • 続 EXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには

    QNo.3774822 「EXCELのマクロでBook1立ち上げ時に自動で別のBookを起動するには」(http://oshiete1.goo.ne.jp/qa3774822.html)でお世話になった者です。その節は多くの方にご回答いただき有難うございました。 前質問ではANo.6にて必要な回答が得られたため締め切り手続きを行ったのですが、この間にANo.7の回答をいただきました。この内容は私にとって大変興味深いもので早速試してみたのですが、私には高度な内容でうまく動作させられませんでした。既に締めていたため新たな質問もできず、こちらに質問させていただく次第です。 次のコードを正しく実行するための記述の仕方をアドバイスいただければ幸いです。 以下ANo.7のご回答者様の回答の抜粋です。 '============================================= 以下は、ほんのお遊びにしか過ぎませんが、こんなことが可能です。 なお、Book1... のような名称というのは、仮の名称であって、特に、それ自体が存在しているとはいえません。 Book1... のSheet1 のA1 に、hirakegoma と入ったときにだけ、別のファイルが開きますが、以下の「待ち時間」の4秒後を過ぎると、何も起こりません。4秒後に入れたものには何も起こりません。開いたと同時では、場合によってはマクロの検索は利かないはずです。 以下のマクロは、カプセル化もしておりませんし、本格的な内容ではありませんが、このようなことが可能です。また、別のソフトのインスタンス生成自体では、Excelのアプリケーションがどのような反応をするかは分かりません。 個人の場合は、"PERSONAL.XLS" ですが、他人に配布する場合は、アドインになると思います。 また、Excelが起動したときに、ブックの中身やブックの名称を全部調べるという方法も可能だと思います。 ループで、 For Each wb In Workbooks  If wb.Name Like "Book#*" Then    Workbooks.Open "Abc.xls"  End If Next '------------------------------------- 'Class1 '------------------------------------- Public WithEvents App As Application Private Sub App_NewWorkbook(ByVal Wb As Workbook) '待ち時間 Const TIMELAG As Integer = 4   Set NewWb = Wb   Application.OnTime Now + TimeValue("00:00:" & CStr(TIMELAG)), "OpenSesame" End Sub '-------------------------------------- '標準モジュール '-------------------------------------- Public myClass As New Class1 Public NewWb As Workbook Public Sub OpenSesame() '添付用のブック Const MYBOOK As String = "Test1.xls" With NewWb.Worksheets(1)  If StrComp(.Range("A1").Value, "HirakeGoma", 1) = 0 Then   If Dir(MYBOOK) <> "" Then    Workbooks.Open "Test1.xls"   Else    MsgBox MYBOOK & "のワークブックが見当たりません。", 48   End If  End If End With Set NewWb = Nothing End Sub '-------------------------------------- 'ThisWorkbookモジュール '-------------------------------------- Private Sub Workbook_Open()  Set myClass.App = Application End Sub '標準モジュールのAuto_Openの場合は、オートメーションでは、そこを通らない可能性があるから、ThisWorkbook モジュールに入れたほうがよいです。Auto_Open は、あくまで、Excelを単独に開いたときだけです。

専門家に質問してみよう