
No.3ベストアンサー
- 回答日時:
#01です。
B.XLSが開いていなくても動作確認してエラーにはなっていませんが、ファイルがないと確かにエラーになりますね。Sub Macro()
Dim wb As Workbook
Dim FN As String
FN = "B.XLS"
Set wb = GetObject("z:\" & FN)
If Not wb Is Nothing Then
Application.DisplayAlerts = False
wb.Close
Application.DisplayAlerts = True
End If
End Sub
No.4
- 回答日時:
Zap35さんのいうとおりB.xlsがあれが強制終了させるわけですから
開いてるかどうかはコードで判断させなくてもいいですよね。
で、別解。On Errorを使う方法。
------------------------------------------------
Sub Test(myBook As String)
On Error Resume Next
Workbooks(myBook).Close False
On Error GoTo 0
End Sub
------------------------------------------------
以上です。
No.2
- 回答日時:
#01です。
B.XLSが開いていたら強制終了するのであれば、開いているかどうかの判断は不要で「無条件にClose」でよくありませんか?GetObjectを用いたのは「同一PC内の別のエクセルアプリケーションでB.XLSを開いている」可能性があるからです。
Sub Macro()
Dim wb As Workbook
Dim FN As String
FN = "B.XLS"
Set wb = GetObject("z:\" & FN)
Application.DisplayAlerts = False
wb.Close
Application.DisplayAlerts = True
End Sub
マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はシート画面に戻って、ALT+F8を押してマクロ一覧からマクロ名を選択します。
この回答への補足
再度ご回答いただき、ありがとうございます。
試したところ、
B.XLSが起動されている場合は問題なく強制終了できました。
しかし、B.XLSが起動していない・ファイルが存在しない場合は、
「実行時エラー '432'
オートメーションの操作中にファイル名またはクラス名を
見つけられませんでした」
とエラーメッセージが表示され、そこで処理はストップしてしまいます。
いかがでしょうか?
やはりB.XLSの起動中を判断し、
起動中の場合のみ強制終了するように組み立てなければ
ならないのではないでしょうか?
まことに恐れ入りますが、回避策を教えていただけますでしょうか?
すみません、補足内容の訂正です。
>しかし、B.XLSが起動していない・ファイルが存在しない場合は、
→ファイルが存在しない場合のみ
起動していなくても、存在していれば問題なく処理は流れました。
よって、ファイルが存在しない場合のみ回避する場合があるようです。
No.1
- 回答日時:
補足要求です。
そのエクセルファイルは自分のPCにあり、自分が専有していますか? それともネットワークを介して共有されている可能性があるファイルですか。
また「強制終了」の対象は何ですか? 共有されている場合は相手方のエクセルを終了するのでしょうか。
質問文から「共有」の匂いがしなくもないのですが、その場合は下記の過去問が参考になるかもしれませんよ
http://oshiete1.goo.ne.jp/qa2633977.html
この回答への補足
zap35さん
ご回答ありがとうございます。
以下、補足です。
>そのエクセルファイルは自分のPCにあり、自分が専有していますか? それともネットワークを介して共有されている可能性があるファイルですか。
→自分のPCにあり、自分が占有しています
また「強制終了」の対象は何ですか? 共有されている場合は相手方のエクセルを終了するのでしょうか。
→A.xlsから、B.xlsが開いているかどうか判断し、開いている場合は強制終了。なお、Bは固定名称ではなくパラメータを使用します。
以上です、他にも不足部分がありましたら補足させていただきますので、どうぞよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのプロパティーでセキ...
-
ExcelブックをGoogleスプレッド...
-
ファイルのアクセス回数について
-
Wordで差込印刷した後に別々の...
-
エクセルでcsvファイルを開いて...
-
マクロ実行後、表示がおかしくなる
-
EXCEL 検索時の設定
-
エクセルvbaでdocuworksprinter...
-
エクセルのハイパーリンクがコ...
-
動かなくなってしまった古いVBA...
-
エクセルVBAで一つ上の階層...
-
xcopyコマンドの進行状況を表示...
-
「ファイルが見つかりません D...
-
[エクセル]コピーするとオブジ...
-
エクセルで複数のコメントのサ...
-
frxファイルの役目
-
同一フォルダにある複数のテキ...
-
VBScript(vbs)での行の取得につ...
-
Excel 相対パス
-
bat 同名ファイルコピー時にリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのプロパティーでセキ...
-
Wordで差込印刷した後に別々の...
-
ExcelブックをGoogleスプレッド...
-
Excel csv保存 列数が異なる場...
-
PowerPoint 2002でファイル名を...
-
サブフォルダから部分一致のエ...
-
EXCEL 検索時の設定
-
エクセル UserForm 呼び出しで...
-
パワーポイントの文字数
-
ファイルのアクセス回数について
-
エクセルファイル名に更新日時...
-
マクロ実行後、表示がおかしくなる
-
Word2010で閉じるボタン押下後...
-
複数のexcelのファイルを一括で...
-
実行時エラー52
-
エクセルのマクロで行と列の削...
-
エクセルでcsvファイルを開いて...
-
For~Nextルーチンで最初の1回...
-
Microsoft PowerPoint2013 各シ...
-
VBAでエクセルで作成したフ...
おすすめ情報