- ベストアンサー
Excel画面で複数のファイルを開けないようにする
Excelで入力用のシートを作り、VBAにてスクロールバーの設定や画面サイズの変更を 行っています。 このファイルを開いている状態で、他のExceファイルをオープンすると、後から開いたExcelファイル が、アクティブ画面として表示される為、入力用のシートが見えなくなってしまいます。 入力用シートのExcelファイルは常に表示しておきたいので、1つのExcelの画面に、入力用シートのExcelファイル以外を開けないようにしたいのです。 何かいい方法があれば教えて下さい。 お願い致します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>他のExcelファイルを開く際、入力用シートのExcel画面と別のExcel画面の中に開くようにしたいのです。 マクロを以下のように書き換えて下さい。 Private Sub Workbook_Deactivate() Dim fn As String '←この行を追加 For Each w In Workbooks If w.Name <> ThisWorkbook.Name Then fn = w.Path & "\" & w.Name '←この行を追加 w.Close savechanges:=False '←TrueだったのをFalseに変更 Shell """" & Application.Path & "\Excel.exe"" """ & fn & """", vbNormalFocus '←この行を追加 End If Next w End Sub これで、同じExcelで開こうとした方を自動的に閉じた後、別プロセスでExcelを起動して別窓でブックを開き直しします。
その他の回答 (4)
- chie65536(@chie65535)
- ベストアンサー率44% (8753/19861)
蛇足ですが。 エクスプローラーでxlsファイルをダブルクリックした場合「既に起動しているExcelがあると、そのExcelで開いてしまう」のが初期状態になっていますが、xlsをダブルクリックした時に、個々に別々のExcelを起動させる事もできます。 http://www.asahi-net.or.jp/~ef2o-inue/kankyo/sub02_03_02.html を参考に、 実行するアプリケーションの所に「%1」を付け足す 「DDEメッセージ」の「[open("%1")]」を消す と言う2つ作業を行って下さい。 こうすると「xlsファイルをダブルクリックするたびに、別々のExcelが立ち上がる」ようになります。
- chie65536(@chie65535)
- ベストアンサー率44% (8753/19861)
追記。 ANo.2の方法では「Excel自体を、もう1つ起動」してしまった場合は対処出来ません。 とは言え、普通にエクスプローラーからxlsファイルをダブルクリックすれば、既に起動していて入力用シートが開いてあるExcelで開こうとするので、ANo.2の方法で問題は起きない筈です。
- chie65536(@chie65535)
- ベストアンサー率44% (8753/19861)
>何かいい方法があれば教えて下さい。 入力用のシート(ブック)を、Book1.xlsと仮定します。 Book1.xlsを開く→「ツール」→「マクロ」→「Visual Basic Editor」→プロジェクトツリーから「ThisWorkBook」を右ボタン→「コードの表示」→コードウィンドウの上の左側のリストから「Workbook」を選ぶ→右側のリストから「Deactivate」を選ぶ 以下のコードが表示されるので Private Sub Workbook_Deactivate() End Sub 2つの行の間にプログラムを書き足して、以下のようにする。 Private Sub Workbook_Deactivate() For Each w In Workbooks If w.Name <> ThisWorkbook.Name Then w.Close savechanges:=True End If Next w End Sub 「ファイル」→「Book1.xlsの上書き保存」→「ファイル」→「終了してMicrosoft Excelへ戻る」 これで、元のBook1.xlsの画面に戻るので「ファイル」→「上書き保存」でBook1.xlsを上書き保存。 この状態で、他のブックを開いて見て下さい。
補足
回答ありがとうございます。 質問の補足をさせて頂きます。 入力用シートのExcelファイルを開いたExcel画面には、他のExcelファイルを開きたくないのですが、 他のExcelファイルが全く開けなくなるのは困ります。 ですから、他のExcelファイルを開く際、入力用シートのExcel画面と別のExcel画面の中に開くように したいのです。要はExcelを別に起動し、そこに他のExcelファイルを開きたいのです。 説明がうまくないので、わかりにくいと思いますが宜しくお願い致します。
- play_with_you
- ベストアンサー率37% (112/301)
「Excelを」もうひとつ立ち上げれば別窓になるので メニューからExcelを立ち上げてからファイルを開くか https://www.google.co.jp/search?q=excel+vba+%E5%88%A5%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%A7%E8%B5%B7%E5%8B%95 で。「入力用シートのExcelファイル」からマクロで開くようにすればVBAで対応ができます。 なお、気づいてるかもしれませんが「ファイルを開く際に自動的に」は無理でしょうね。ファイルを開く前には識別もVBAの実行もできませんから。
お礼
お礼が遅くなりすみません。 今回は、No.4の方法で解決しました。 結局はplay_with_youさんに教えて頂いた方法とほぼ同じなのですが...。
補足
回答ありがとうございます。 教えて頂いた、マクロからの起動でいけそうですね。 この場合、どのイベントが発生した時に処理すれば、違和感なくファイルを開くことが できるでしょうか。
お礼
お礼が遅くなりすみません。 教えて頂いた方法で、解決することができました。 本当にありがとうございました。