質問編集履歴

1 項目を適切に分けました。

sokha

sokha score 136

2016/04/06 19:02  投稿

Workbooks.Openをネストさせて、二回使用すると二回目が開けない
###前提・実現したいこと
Visual Basicにて、
Book1,Book2,Book3 がありそれぞれ
1)Book1に open -> book2を開く というコード
2)Book2に open -> book3を開く というコード
を書き、 Book1を開いた時、book3まで連鎖的に開けることを期待したのですが、
これができません。
を書き、 Book1を開いた時、book3まで連鎖的に開けることを期待しました。
###発生している問題・エラーメッセージ
book3が開きません。
1,2の単独ですと動きます。
ですが、book1から開くと、エラーが返却されないにもかかわらず、なぜかbook2のコード内の```Workbooks.Open ("book2.xls").Name```がBook1となるのです。
そしてWorkbooksにはbook3が入っていません。(開いていない)
 
 
###発生している問題・エラーメッセージ  
###該当のソースコード
@book1
```
Sub Workbook_Open()
   MsgBox ("start")
   Workbooks.Open ("book2.xls")
End Sub
```
@book2
```
Sub Workbook_Open()
   MsgBox ("NO2 Open!")
   Workbooks.Open ("book3.xls")
End Sub
```
@book3
```
Sub Workbook_Open()
   MsgBox ("OK, done")
End Sub
```
###試したこと
それぞれbook2のbook3呼び出し時に、ブレイクポイントで止めて```print Workbooks.Open ("book2.xls").Name```すると、「book1」が帰ってきます。
###補足情報(言語/FW/ツール等のバージョンなど)
Microsoft Visual Basic version 14.2
Mac OX Yosemite
  • VBA

    4656 questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Excel

    3704 questions

    Excelは、マイクロソフト社が開発しているデータ集計や分析を行う表計算ソフトの一つです。文書作成や表計算、資料作成などの多彩な機能を備えており、統合パッケージであるMicrosoft Officeに含まれています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る