エクセルで作ったマクロを自動実行・自動保存・自動終了したいので、下記のような
記述のマクロをつくり、Windowsのタスク処理で1回/日実行させようとしています。
----<ここから>------------------------------------
Sub Auto_Open()
   :
  :
  Workbooks("ekuseru.xls").Close SaveChanges:=True
End Sub
----<ここまで>------------------------------------

質問その1
 マクロを編集したい場合はどうすればいいのでしょう?
 そのBookを開くとマクロが動き出し、保存した上で終了してしまいます。
 マクロ無効でBookを開くと「ツール」⇒「マクロ」⇒「マクロ」で「編集」はクリッ
 クできないようになってます。

質問その2
 マクロが終了するとき、Bookは閉じますがエクセル自体は閉じません。
 (意味通じますか?)
 エクセル自体を閉じるにはマクロの記述はどうすればいいのでしょう?


以上、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

(1)


無効で開いて、Alt+F11を押して
左上辺りにある奴を適当にダブルクリックして下さい。
その中のどこかにあります。
見えない理由は頭にPrivateが付いてるからだと思います。

【見える】
Sub プログラム名()
End Sub
【見えない】
Private Sub プログラム名()
End Sub

(2)
(大きい) エクセル→ブック→シート→セル (小さい)って
感じになってます。Close命令はブックを終了させる事は出来ても
エクセルを終了させる事は出来ません。
エクセルを終了させる場合はapplication.Quitを使います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えていただいた内容でやりたいことができました。

(2)のApplication Quitは試行錯誤したのですが、ネットで検索し、
記述内容がわからないまま「流用したらできてしまった」って感じですが、
やりたいことが叶ったのでそのまま使ってます(^^;)

お礼日時:2009/05/26 05:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVBA=一定時間エクセルの入力操作がない場合、自動的にそのブックを閉じたい

共通でエクセルを使用していますが、時々エクセルを開いたまま外出したり、休憩したり
する方がおり、別な方がエクセルを開いて作業をしたいと思っても、どこかで開きぱなしのことが時々あります。

そんな時のために、エクセルに何も入力等がない一定時間経過したら、自動で保存して閉じる機能を持たせたいと考えています。例えば入力が5分以上なければ自動的に閉じるように・・・・

上書き保存は下記のVBAで機能するのは確認済みですが、これに「5分後」等のタイムの設定をしたいのですが可能でしょうか?

可能の場合、どのようなVBAになりますか??

よろしくお願いします。


'ブックの上書き保存
ActiveWorkbook.Save
' 保存確認を避けるため、保存済みにする
ThisWorkbook.Saved = True

' 他にブックが開いていなければ、Excelを終了する
If Workbooks.Count <= 1 Then Application.Quit

' 本ブックをClose
ThisWorkbook.Close False

共通でエクセルを使用していますが、時々エクセルを開いたまま外出したり、休憩したり
する方がおり、別な方がエクセルを開いて作業をしたいと思っても、どこかで開きぱなしのことが時々あります。

そんな時のために、エクセルに何も入力等がない一定時間経過したら、自動で保存して閉じる機能を持たせたいと考えています。例えば入力が5分以上なければ自動的に閉じるように・・・・

上書き保存は下記のVBAで機能するのは確認済みですが、これに「5分後」等のタイムの設定をしたいのですが可能でしょ...続きを読む

Aベストアンサー

何かオペレーションが行われたかを監視して、5分ごとにそれをチェックし、オペレーションがされなかったらブックを閉じるというマクロを組んでみました。(最後のオペレーションから5分間監視、ではなく、ブックを開いてから5分間隔でチェックするので、多少のタイムラグがあります)

しかし、「何もしなかったら」というのを検知する方法がわからなかったため、ちょっと強引ですが ThisWorkbook のイベントほとんど全てをを定義して、「何かした」というフラグを立てるという方法になっています。
そのため、ThisWorkbook のイベントで拾えない操作をしたときにも強制終了する可能性があります。

まず、標準モジュールに以下のマクロを貼り付けてください。
"00:05:00"という箇所が「5分」を定義しているところなので、時間間隔を調整したいときはそこをいじってください。



Public Operated As Boolean

Sub SetTimer()
 Application.OnTime Now + TimeValue("00:05:00"), "CloseMe"
End Sub

Sub CloseMe()
 If Operated Then
  Operated = False
  SetTimer
  Exit Sub
 End If
 
 'ブックの上書き保存
 ActiveWorkbook.Save
 ' 保存確認を避けるため、保存済みにする
 ThisWorkbook.Saved = True

 ' 他にブックが開いていなければ、Excelを終了する
 If Workbooks.Count <= 1 Then Application.Quit

 ' 本ブックをClose
 ThisWorkbook.Close False
End Sub



そして、ThisWorkbook に以下のマクロを貼り付けてください。



Private Sub Workbook_Open()
 Operated = False
 SetTimer
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
 Operated = True
End Sub

Private Sub Workbook_Deactivate()
 Operated = True
End Sub

Private Sub Workbook_Activate()
 Operated = True
End Sub

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
 Operated = True
End Sub

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 Operated = True
End Sub

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
 Operated = True
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
 Operated = True
End Sub

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
 Operated = True
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 Operated = True
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
 Operated = True
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
 Operated = True
End Sub

Private Sub Workbook_WindowResize(ByVal Wn As Window)
 Operated = True
End Sub



ご覧の通り、Workbook_Open()だけは初期設定をしていますが、その他は「何かイベントが発生したらフラグをTrueにする」の羅列です。

単にExcelのファイルを開いて、マウスのホイールでスクロールしながらあちこちシートを眺めているだけの場合など、セル操作や印刷などの操作がない場合にも強制終了されてしまうので、そこはご承知ください。

何かオペレーションが行われたかを監視して、5分ごとにそれをチェックし、オペレーションがされなかったらブックを閉じるというマクロを組んでみました。(最後のオペレーションから5分間監視、ではなく、ブックを開いてから5分間隔でチェックするので、多少のタイムラグがあります)

しかし、「何もしなかったら」というのを検知する方法がわからなかったため、ちょっと強引ですが ThisWorkbook のイベントほとんど全てをを定義して、「何かした」というフラグを立てるという方法になっています。
そのた...続きを読む

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

QEXCELマクロを無効にして開く方法

掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を
マクロ無効の状態で開く方法が分からず困っております。

マクロの内容は Workbook_Open 処理で、特定セルに入力されている
EXCELファイルを開き、自身は閉じるというものです。


Private Sub Workbook_Open()

Dim FileName As String

'1ファイル目
Range("A2").Select
FileName = ActiveCell.FormulaR1C1
Workbooks.Open FileName:=FileName
ThisWorkbook.Activate

'2ファイル目
Range("A3").Select
FileName = ActiveCell.FormulaR1C1
Workbooks.Open FileName:=FileName
ThisWorkbook.Activate

・・・・・・繰り返し

DoEvents
ThisWorkbook.Close

End Sub


上記の特定セルに設定してあるファイルパスを変更するためには
マクロを無効にして開かなければなりません。

マクロのセキュリティを変更して、「すべてのマクロを無効にする」を設定して
該当のファイルを開けば良い事は分かっているのですが、他に分かりやすい方法で
マクロ無効状態で開く方法があれば、ご教授頂ければと思います。

掲題の通りなのですが、EXCEL2007で作成されたマクロ有効ファイル(XLSM形式)を
マクロ無効の状態で開く方法が分からず困っております。

マクロの内容は Workbook_Open 処理で、特定セルに入力されている
EXCELファイルを開き、自身は閉じるというものです。


Private Sub Workbook_Open()

Dim FileName As String

'1ファイル目
Range("A2").Select
FileName = ActiveCell.FormulaR1C1
Workbooks.Open FileName:=FileName
ThisWorkbook.Activate

'2ファイル目
...続きを読む

Aベストアンサー

Win7、Excel2010、ダブルクリックでファイルを開く設定、の場合ですが、
Excelが開いていない状態で、
一旦、ファイル(またはショートカット)をクリックしてから、
Shiftキーを押し、そのまま、ダブルクリック、
以上の手順で、セーフモードでExcelとブックが開きます。
つまり、Private Sub Workbook_Open()は実行されません。
環境によって手順は異なると思いますけれども。


人気Q&Aランキング

おすすめ情報