Excel VBA 質問スレッド No.145 (解決済)

手で新プロセスとしてEXCELを起動した場合と同じ挙動を実装したい

投稿者 : いの     投稿日時 : 2020/12/16(Wed) 16:23:31     OS : Windows 10     EXCEL : その他
分かる方がおられましたらお力をお貸しください。

Excel Version:Office365

EXCEL VBAの実行中に、他のEXCELファイルを編集をしたいことがあります。
既に編集したいEXCELが開いているケースでは、VBAが動作するEXCEL(以下、VBA.xlsmとします)をバッチから/xスイッチ付で実行することで回避しています。
しかし、この方法でも、VBA.xlsmを起動・実行中に別EXCEL(以下、編集.xlsxとします)を開いて編集するケースでは、編集.xlsxがVBA.xlsmと同プロセスになってしまい編集できないという問題が起こります。
確認したところ、/xなしでEXCELファイルを開く場合、最後に開いたプロセスのドキュメントとして追加されるように見えました。
そこで、VBA.xlsmを起動したタイミングで必ず別プロセスで空のBOOKを開いておけば、以降はそのプロセスの方で編集.xlsxが開くのではないかと考え、下記のように実装しました。

●VBA.xlsmのThisWorkbookモジュールに追加
Private Sub Workbook_Open()
Dim objNewProc As Application
Dim wbNew As Workbook

' 別プロセスを起動
Set objNewProc = CreateObject("Excel.Application")
Set wbNew = objNewProc.Workbooks.Add
End Sub


結果は、狙い通り新BOOKが別プロセスで起動しましたが、編集.xlsxを開いたところVBA.xlsmのプロセスに追加されてしまいました。
Applicationの.Visibleと.UserControlが怪しいかと思いTrueを設定してみましたが変わりませんでした。

VBA.xlsmの実行中に手動で/xスイッチで新プロセスのEXCELを起動し、「空白のブック」を作った場合は編集.xlsxが新しいプロセスの方に追加されることは確認済です。
手動で新プロセスを起動した時と同じ挙動をVBA(またはAPI)で実装するにはどうすればよいでしょうか。

VBA.xlsmを高速化することは出来ないという前提でお願いします。
他のアプリを動かすインターフェースとして利用しており、やるのであればVBA以外の方法で実装することになりますが、期間の問題でそれも難しいのでまずは何とか回避する手段がないかをトライしています。

[返信 1] Re : 手で新プロセスとしてEXCELを起動した場合と同じ挙動を実装したい
投稿者 : ヘンリー     投稿日時 : 2020/12/16(Wed) 17:16:10
私もまだ勉強中の身で、確証はありません。
意図と違っていたら申し訳ありません。
参考になれば幸いです。

>VBA.xlsmの実行中に手動で/xスイッチで新プロセスのEXCELを起動し、
>「空白のブック」を作った場合は編集.xlsxが新しいプロセスの方に追加されることは確認済です。
>手動で新プロセスを起動した時と同じ挙動をVBA(またはAPI)で実装するにはどうすればよいでしょうか。

VBA(API)ではありませんが、
「バッチファイルを手動で起動した時に、意図した通り動く」のであれば、
以下の様に「VBAからバッチファイルを起動する」
という方法はいかがでしょうか。


Private Sub Workbook_Open()
Dim strBatFile As String
Dim objShell As Object

strBatFile = "バッチファイル名フルパス"

Set objShell = CreateObject("WScript.Shell")
objShell.Run strBatFile, 1, True

End Sub

[返信 2] Re : 手で新プロセスとしてEXCELを起動した場合と同じ挙動を実装したい
投稿者 : ヘンリー     投稿日時 : 2020/12/17(Thu) 12:17:50
前に挙げたコードに一部訂正がありましたので、
訂正してお詫びいたします。
申し訳ありません。


誤)objShell.Run strBatFile, 1, True

正)objShell.Run strBatFile, 1, False

誤りの方だと、VBA.xlsmの処理が続行しませんでした。

参考url:http://piyopiyocs.blog115.fc2.com/blog-entry-504.html

[返信 3] Re : 手で新プロセスとしてEXCELを起動した場合と同じ挙動を実装したい
投稿者 : いの     投稿日時 : 2020/12/22(Tue) 11:03:54
>ヘンリーさま
ご回答ありがとうございます。
バッチファイルをRunして無事に親プロセスとなれるExcelが起動しました。
本当に助かりました。

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2021-01-27 11:51:29 )

Page
Top