プロが教えるわが家の防犯対策術!

ActiveWorkbook.Closeを使用するとアクティブのブックを
閉じることができると思いますが、
その逆でアクティブでないブックのみを閉じる処理って
ないのでしょうか。

A 回答 (4件)

こんにちは。



マクロのある自ブックが、アクティブかどうかにかかわらず、任意のブックにアクティブ・ブックだけを残すマクロは、プログラム的には可能でも、どう考えても、実用的ではありません。

「個人用マクロブック」は、常にアクティブではありませんから、それを利用して、「個人用マクロブック」の標準モジュールに入れるものにしました。

これは、あくまでも、自分のために考えてみました。「個人用マクロブック」に、マクロをどのようにして入れるというような基本的なことは、ご質問されてもお答えしませんので、あらかじめご了解願います。

'個人用マクロブックの標準モジュール
'-------------------------------------------

Sub ExptBkClosing()
Dim w As Workbook
 For Each w In Workbooks
 If Not (w Is ActiveWorkbook) _
   And Not (w Is ThisWorkbook) Then
   If Not w.Saved Then
    If MsgBox(w.Name & vbCrLf & "保存しますか?", 64 + vbYesNo) = vbYes Then
      w.Close True
    Else
      w.Close False
    End If
   Else
    w.Close False
   End If
 End If
Next w
End Sub

'なお、これをツールボタンに登録します。
    • good
    • 1

>アクティブでないブックのみを閉じる処理


この処理を行うマクロを含んだブックとアクティブなブックは違いますから

Sub test()
  Dim bk1 As Workbook
  Dim bk2 As Workbook
  Set bk1 = ActiveWorkbook
  For Each bk2 In Workbooks
    if Not (bk2 Is bk1) And Not (bk2 Is ThisWorkbook) Then
      bk2.Close False
      End If
    Next
  If Not ThisWorkbook Is bk1 Then
    ThisWorkbook.Close False
    End If
End Sub
    • good
    • 0

excel vba ヘルプより



この使用例は、作業中のブックを除く、他に開いているすべてのブックを保存して閉じます。

For Each w In Workbooks
If w.Name <> ThisWorkbook.Name Then
w.Close savechanges:=True
End If
Next w
    • good
    • 0

Workbooks("Book2.xls").Close


とかで出来ます。

この回答への補足

回答ありがとうございます。
やっぱり明示的にファイル名を指定しないとできませんか??

補足日時:2008/07/28 00:03
    • good
    • 0

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