• ベストアンサー

Excel画面で複数のファイルを開けないようにする

Excelで入力用のシートを作り、VBAにてスクロールバーの設定や画面サイズの変更を 行っています。 このファイルを開いている状態で、他のExceファイルをオープンすると、後から開いたExcelファイル が、アクティブ画面として表示される為、入力用のシートが見えなくなってしまいます。 入力用シートのExcelファイルは常に表示しておきたいので、1つのExcelの画面に、入力用シートのExcelファイル以外を開けないようにしたいのです。 何かいい方法があれば教えて下さい。 お願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>他の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を起動して別窓でブックを開き直しします。

na21bua1
質問者

お礼

お礼が遅くなりすみません。 教えて頂いた方法で、解決することができました。 本当にありがとうございました。

その他の回答 (4)

回答No.5

蛇足ですが。 エクスプローラーで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が立ち上がる」ようになります。

回答No.3

追記。 ANo.2の方法では「Excel自体を、もう1つ起動」してしまった場合は対処出来ません。 とは言え、普通にエクスプローラーからxlsファイルをダブルクリックすれば、既に起動していて入力用シートが開いてあるExcelで開こうとするので、ANo.2の方法で問題は起きない筈です。

回答No.2

>何かいい方法があれば教えて下さい。 入力用のシート(ブック)を、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を上書き保存。 この状態で、他のブックを開いて見て下さい。

na21bua1
質問者

補足

回答ありがとうございます。 質問の補足をさせて頂きます。 入力用シートのExcelファイルを開いたExcel画面には、他のExcelファイルを開きたくないのですが、 他のExcelファイルが全く開けなくなるのは困ります。 ですから、他のExcelファイルを開く際、入力用シートのExcel画面と別のExcel画面の中に開くように したいのです。要はExcelを別に起動し、そこに他のExcelファイルを開きたいのです。 説明がうまくないので、わかりにくいと思いますが宜しくお願い致します。

回答No.1

「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の実行もできませんから。

na21bua1
質問者

お礼

お礼が遅くなりすみません。 今回は、No.4の方法で解決しました。 結局はplay_with_youさんに教えて頂いた方法とほぼ同じなのですが...。

na21bua1
質問者

補足

回答ありがとうございます。 教えて頂いた、マクロからの起動でいけそうですね。 この場合、どのイベントが発生した時に処理すれば、違和感なくファイルを開くことが できるでしょうか。