Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
新しくExcelを立ち上げたときのbookの参照
投稿日時: 19/04/10 17:36:56
投稿者: so

いつもお世話になっております。
 
VBAを業務で利用したいと思い、勉強を始めております。
 
book間の参照について質問があります。
 
-----------------------------------------
 
例えばA.xlsmと、B.xlsmというbookがあるとします。
 
A.xlsmには、

Option Explicit

Sub test()
    Dim ws As Workbook
    
    For Each ws In Workbooks
        Debug.Print ws.Name
    Next
End Sub

 
と記載しました。
 
B.xlsmを、A.xlsmのExcelから「ファイル」→「開く」などの操作で開いた場合、
 
上記のコードを実行すると、

A.xlsm
B.xlsm

とイミディエイトウィンドウに表示されますが、
 
windowsのスタートなどから新たにExcelを立ち上げて、そのExcelでB.xlsmを開いた場合には、
 
A.xlsmの上記のコードを実行すると、A.xlsm のみ表示されます。
 
 
-----------------------------------------
 
前置きが長くなりましたが、こういった開き方をした場合でも、A.xlsmでB.xlsmを参照する場合には、どのようにコードを記載したらいいのでしょうか? もしくは、この開き方でお互いを参照することはできないでしょうか?
 
宜しくお願い致します。

回答
投稿日時: 19/04/11 20:55:57
投稿者: WinArrow
投稿者のウェブサイトに移動

基本的に
A.xlsm と B.xlsm のどちらが「メイン」と考えるならば、
メイン側から、他のブックを開くのがよいでしょう。
 
例、A.xlsmから、B.xlsmを制御するという前提で
 
Set BBook = Workbooks.Open(Filename:=パス & "\B.xlsm")
 
のようにします。
 
  
若し、手操作で開いてしまったことを想定するならば、
GetObjectで、開いているか確認するとよいでしょう。

投稿日時: 19/04/12 08:59:49
投稿者: so

回答ありがとうございます。
 
運用する場合は、B.xlsmの方は開かず、A.xlsmのコードで開くようにしてみます。