
Excel2003です・
ユーザーが新規Excelファイル(book1)かテスト用ファイルを開いている場合は閉じる処理を考えております。
Option Explicit
Dim ws As Workbook, flag As Boolean
Private Sub Workbook_Open()
For Each ws In Workbooks
If ws.Name = "Book1" Then flag = True
Next ws
If flag = True Then
Workbooks("Book1.xls").Close
Else
End IF
For Each ws In Workbooks
If ws.Name = "テスト用.xls" Then flag = True
Next ws
If flag = True Then
Workbooks("テスト用.xls").Close
Else
End IF
End Sub
このコードだとBook1を開いているのに、Trueで拾ってくれません。
ws.Name = "Book1.xls"にしても同じです。
どこかおかしい部分があるのでしょうか?
No.2ベストアンサー
- 回答日時:
こんにちは。
お邪魔します。#1さんのご回答、冒頭4行で必要な解決策となり得ると思います。
ただ、それで十分かな?という疑問がありますのでサンプルを提示してみます。
' ' フラグが必要ない場合
Sub Re8067327()
Dim wbk As Workbook
For Each wbk In Workbooks
If wbk.Name Like "Book#" Or wbk.Name = "テスト用.xls" Then
wbk.Close
End If
Next
End Sub
' ' フラグが必要な場合
Sub Re8067327a()
Dim wbk As Workbook
Dim flg As Boolean
For Each wbk In Workbooks
If wbk.Name Like "Book#" Or wbk.Name = "テスト用.xls" Then
flg = True
wbk.Close
End If
Next
If flg Then
' ' 閉じるべきブックが見つかった場合
Else
' ' それ以外の場合
End If
End Sub
' ' 【未保存新規ブック】【テスト用.xls】を分けてフラグが必要な場合
Sub Re8067327b()
Dim wbk As Workbook
Dim flg1 As Boolean
Dim flg2 As Boolean
For Each wbk In Workbooks
If wbk.Name Like "Book#" Then
flg1 = True
wbk.Close
End If
If wbk.Name = "テスト用.xls" Then
flg2 = True
wbk.Close
End If
Next
If flg1 Then
' ' 未保存新規ブックが見つかった場合
ElseIf flg2 Then
' ' テスト用.xlsブックが見つかった場合
Else
' ' それ以外の場合
End If
End Sub
要は
未保存新規ブックに付く仮の名前は"Book1"だけとは限らない、ということです。
もし、ブックを閉じる処理だけで良ければ、フラグは要りませんから、
For Each ループ一個で完結できます。
その他の場合は、どのようにflgを定義して条件分岐するかによって、
書き方が変わって来ます。
なお、蛇足ですが、
wbk.Name Like "Book#"
は、Book1-Book9、9種の未保存新規ブックに対応していますが、
より多くの未保存新規ブックに対応させる必要があるとお感じになったならば
wbk.Name Like "Book#"
の部分を
wbk.Name Like "Book#" Or wbk.Name Like "Book##"
に置換するような要領で対応します。
それから、
wbk.Close
と書いて、wbkが未保存ならば、保存のダイアログが表示されて
保存するかどうか問う、という仕様ですから、
恐らく引数を指定しないこのままの形が質問者さんの求める方法でしょうから、
その点は問題ないと思います。
もし、そうではなくて、
保存するか保存しないかをダイアログを表示せずに強制して
閉じる、ということでしたら、
まずは.Closeメソッドについてヘルプを確認してみるとよいと思います。
以上です。
No.3
- 回答日時:
では、私も老婆心を出して、ちょっと違う切り口から。
とりあえず「新規ワークブック=保存されていない=『名前が付いていない』」ので、
ご提示のコード
> Workbooks("Book1.xls").Close
が機能しない、と言うのは前お二方と同意権です。
なので、私はこの「保存されていない」を利用したコードを紹介。
Private Sub Workbook_Open()
Dim WB As Workbook
For Each WB In Workbooks
If WB.Path = "" Then
WB.Close
End If
Next
End Sub
と言う、単純なコードです。
「ブック.Path」は、指定ブックが保存されているフォルダ名を返します。
要するに「保存されていない」のであれば、.Pathは空白を返しますので、
それを利用して閉じるかどうか判断してやる、と言う内容です。
「テスト用.xls」も含めて閉じるなら、
If WB.Path = "" Or WB.Name = "テスト用.xls" Then
と書き加えてやればOKです。
#2さんと同じ見解、「閉じるだけならフラグは不要」と言う考え方です。
フラグが必要と言うことでも、質問文中のコードを見る限り応用できると思うので
ここでは割愛させて頂きます。
・テスト用.xls
・新規ブック
・その他の既存ブック
の3つを開いた状態で走らせると、その他既存ブック以外が閉じられると思いますので、
とりあえず、ご確認くださいませ。
でも本当の問題は、
コレをどこに組み込んでどんなタイミングで走らせるか?
なのかもしれませんね。
No.1
- 回答日時:
ウインドウズ側の設定次第
の、ところもありますが、
未保存のファイルには、拡張子がつかない
んじゃ、なかったでしたっけ?
とにかく、
Book1を見つけたとき
Book1.xksを閉める。
こうしてますよね?
これ、別物ですよね?
あと、ネット漁ってみたのですが
Workbooks("Book1").Close SaveChanges := False
に、なってましたよ?
以下、余談ですが
これ、勝手に閉められるの
わたし的に、目の前で起こったら
「勘弁してよ」
ですね、
練習用だとは思いますが、こういうのって
えてして、
無効化、忘れ易いんですよね、
組み込まないことを、
強く強く、お勧めさせてください。
…
老馬身ですね、 済みません。
如何でしょうか?
とんちんかんなことを言っていたなら済みません。
でもなお、
お役に立てていたならば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB2010でExcelの行をコピーして...
-
ExcelVBAで今開いているユーザ...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
すでに開いているブックのマク...
-
VBAでEXCELのワークシートを削...
-
フォルダ内の全ブックのシート...
-
マクロでログ抽出し、日付ごと...
-
他のBookのユーザー定義関数を使う
-
エクセル2007で、Application.R...
-
Windows10のクイックアクセスと...
-
【マクロ】excelファイルを開く...
-
【マクロ】宣言は、何のために...
-
エクセルファイルを自身のファ...
-
無料ソフトのLibre OfficeのBas...
-
htmlまたはJavascriptからファ...
-
「開いているすべてのブック」...
-
EXCEL VBA テキストボックスの...
-
どのドキュメントは暗号化され...
-
別のパソコンでエクセルのマク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAで今開いているユーザ...
-
エクセルVBA Workbook変数に変...
-
フォルダ内の全ブックのシート...
-
【Excel VBA】ブックを複数開い...
-
すでに開いているブックのマク...
-
【ExcelVBA】指定の書式で、マ...
-
VB2010でExcelの行をコピーして...
-
excelでハイパーリンク 別ブッ...
-
フォルダ内の全ブックのシート...
-
フォルダ内の全てのBookに同じ...
-
[Excel VBA] フォルダ内の複数...
-
VBAでEXCELのワークシートを削...
-
VBA セル入力された日付データ...
-
VBA、Excelのworkbook.open に...
-
EXCELマクロでxlsとxlsxを開く方法
-
excelマクロ、任意セルの値で名...
-
EXCEL VBA起動時の処理
-
Excel VBAを後ろで動かす方法
-
EXCELマクロで上書きメッ...
-
同じ名前で拡張子が違うファイル
おすすめ情報