通常はVBAを実行している間はExcelを使えない
VBAは開いているExcelアプリケーションに紐付いているため、VBAの処理を実行中はVBAのコードが書かれているブックだけでなく他のブックにも入力したり参照したりすることができません。
これが数秒で終わるような処理であれば大した話ではないのですが、結構時間が掛かる処理の場合はExcelでの作業できないことが問題になります。
このような場合の対応方法について説明します。
Excelアプリケーションを複数起動するとVBAとExcel操作の両方が可能
VBAを実行しながらExcelを操作するのに一番簡単な対応方法はExcelを複数起動することです。
複数Excelを起動すると、一方でVBAを実行しておいて、もう一方では別の作業を行うことが出来ます。
もちろんもう一方で別のVBA処理を行うこともExcelブックの編集を行うことも可能です。
なお、Excelは同じ名前のブックを開くことが出来ませんが、Excelを複数起動しておけば同じ名前のブックでも別々のExcelで開くことが可能です。
ただしその場合は書き込みできるのは1つだけで、他は読み取り専用になります。
Excelを複数起動する方法
既にExcelが起動している場合で、さらに別アプリケーション(別インスタンス)としてExcelを起動させたい場合、いくつかの方法があります。
簡単な順に紹介します。
タスクバーのExcelから起動
タスクバーのExcelから起動する方法は、既にExcelを起動している場合にしか使えない方法です。
タスクバーから起動中のExcelを右クリックして「Microsoft Excel 20xx」をクリックします。
そうすると新しいExcelアプリケーションが起動します。
プログラムとファイルの検索
プログラムとファイルの検索を使う方法は、OSのバージョンによってスタートメニューにあったり別のところにあったりと異なります。
検索窓で「excel /x」と入力してEnterを押すと新しいExcelアプリケーションが起動します。
面倒な場合はどのOSでも「Windowsボタン」+「R」キーを押すと「ファイル名を指定して実行」ダイアログが表示されます。
ここで「excel /x」と入力しても構いません。
「送る」メニュー
コンテキストメニューの「送る」を使う方法は上記の方法と異なり、以下の事前に設定が必要ですが、一度設定してしまえばあとはずっと使えるようになります。
まず、Excelの本体である「EXCEL.EXE」をエクスプローラで表示します。
Officeのバージョンによって異なりますが、大体以下のような場所にあるはずです。
「C:\Program Files\Microsoft Office\Office14\EXCEL.EXE」
「C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE」
EXCEL.EXEのパスをバージョンに関わらず取得する場合は「VBAでExcel.exeのフォルダやフルパスを取得する」をご参照ください。
次に、もう1つ別のエクスプローラーを開いて、パスに「Shell:SendTo」と入力してEnterを押すと、SendToフォルダが開きます。
以下のパスが開きます。
「C:\Users\ログインユーザー名\AppData\Roaming\Microsoft\Windows\SendTo」
次に、最初に開いたエクスプローラーのEXCEL.EXEをSendToフォルダに右クリックでドラッグしてショートカットを作成します。
作成したショートカットのプロパティを開き、全般タブの名前は任意(ここでは「Excel(NewProcess)」)で付けて、ショートカットタブのリンク先の一番右に「 /x」(/xの左は半角スペース)を付けてOKボタンを押します。
「C:\Program Files\Microsoft Office\Office14\EXCEL.EXE /x」
おまけで、作ったショートカットをコピペして、プロパティを開いて名前に「Excel(ReadOnly)」、リンク先に「 /r」を付けます。こちらは読み取り専用で開く用です。
「C:\Program Files\Microsoft Office\Office14\EXCEL.EXE /r」
事前設定はここまでです。
あとは、Excelブックを右クリックして送る→Excel(NewProcess) を選択すれば新規Excelアプリケーションが起動します。
Excel(ReadOnly)に渡せば読み取り専用で開きます。
新規Excel起動時のPERSONAL.XLSBのダイアログ
PERSONAL.XLSBにVBAのコードを保存している場合、新規にExcelを起動すると以下のダイアログが表示されます。
これは、先に開いたExcelの方にPERSONAL.XLSBへの書き込み権限があるため、あとで開いたExcelには編集できませんよ、という警告です。
通常は「読み取り専用」ボタンを押しておけばOKです。