• ベストアンサー

エクセルで別ブックをバックグラウンドでオープンする方法

最初にメニュー画面となるブックを開いた後、データブックをバックグランドのみで開きたいのですが、エクセルVBAで単純にOPENを行うと画面上にデータブックが表示されてしまいます。操作作業者に画面が次々入れ替わることを見せたくないのですが、ブックをバックグラウンドだけで開く方法はあるのでしょうか。VBAについては素人で宜しくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.5

ごめんなさい。解決済みと思って見ていませんでした。 まだですか? 後で開いた3つのブックは、VBAで操作しないのですか。 操作するのでしたら、ブックをオブジェクト変数に入れておいた方が操作しやすい と思うのですが・・・ 一応何処でどのように使うのか判りませんので・・・ こんな感じで如何でしょうか。 ブックを開いてから非表示にするまでの瞬時の画面のことですね。 それなら、その間、ScreenUpdating = False でどうでしょうか。 Public Bk1 As Workbook Public Bk2 As Workbook Public Bk3 As Workbook Dim PathName As String Sub Auto_Open() PathName = ThisWorkbook.Sheets("メニュー").Range("C28").Value ファイル読込 "初期値.xls", Bk1 ファイル読込 "データ1.xls", Bk2 ファイル読込 "データ2.xls", Bk3 End Sub Sub ファイル読込(BkName, ObjBk) Application.ScreenUpdating = False Set ObjBk = Workbooks.Open(Filename:=PathName & "\" & BkName) Windows(BkName).Visible = False Application.ScreenUpdating = True End Sub

kmasumi
質問者

お礼

ありがとうございました。試みましたが、勉強不足で理解できませんでした。 ・Public Bk1 As Workbook ・ファイル読込 "初期値.xls", Bk1 ・Sub ファイル読込(BkName, ObjBk) ・Set ObjBk = Workbooks.Open(Filename:=PathName & "\" & BkName)のつながり、関連が分かりませんでした。(VBを知らないため、Bk1とBkNameとObjBkが何だか分からない)

kmasumi
質問者

補足

できました。ありがとうございました。 Public SyokichiFile As Workbook Sub auto_open() Call ファイル読込("初期値.xls", SyokichiFile) End Sub Sub ファイル読込(Carentfile, ObjBook) Application.ScreenUpdating = False PathName = Workbooks("勤務状況.xls").Sheets("メニュー").Range("C28") Set ObjBook = Workbooks.Open(FileName:=PathName & "\" & Carentfile) End Sub

その他の回答 (4)

  • chupark
  • ベストアンサー率41% (90/218)
回答No.4

#2です。 訂正だけで申し訳ないのですが、先に書いた私のアドバイスは全くの勘違いでした。 bookはOpenしないとWorkbooksコレクションに読み込まれないはずでした。 #1さんの言われるように、Openした直後にvisibleをfalseにすれば非表示になったと思ったのですが…。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

> この方法だとブックをOPEN毎に画面が入れ替わるのです。 そんなことありませんよ。 当然、そのような操作をすれば、そうなります。 BOOKを10個開いて、1つのブックだけのウィンドウを表示させた状態で、10個のブックを 操作できるのです。

kmasumi
質問者

お礼

おかしいな? 下記のように作ってあるのですが メニュー.xlsが起動すると順次 初期値、データ1、データ2と読み込んでいくのですが この順で次々と画面表示が入れ替わり、 最後にメニュー.xlsの画面となります。 Sub auto_open() CarentFile = "初期値.xls" Application.Run "ファイル読込" CarentFile = "データ1.xls" Application.Run "ファイル読込" CarentFile = "データ2.xls" Application.Run "ファイル読込" End Sub Sub ファイル読込() PathName = Workbooks("メニュー.xls").Sheets("メニュー").Range("C28") Workbooks.Open Filename:=PathName & "\" & CarentFile ActiveWindow.Visible = False End Sub

  • chupark
  • ベストアンサー率41% (90/218)
回答No.2

試していないのですが... dim book as Workbook set book = Workbooks("hoge.xls") という具合に開くファイルをオブジェクト変数へとって扱ってみてはどうでしょうか?

kmasumi
質問者

お礼

ありがとうございます。素人ですので理解できないのですが。 set book = Workbooks("hoge.xls")は、 Workbooks.Open Filename:=PathName & "\" & "hoge.xls"に相当する命令になるのですか? だとしたら、PathName に相当するところは どのように記述すればよいのでしょうか。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

ブックを開いた後、すぐ非表示にするとか、最小化するのは、どうなんですか? 非表示は、 Workbooks.Open "c:\Data\Book2.xls" ActiveWindow.Visible = False 最小化は、 Workbooks.Open "c:\Data\Book2.xls" ActiveWindow.WindowState = xlMinimized

kmasumi
質問者

お礼

ありがとうございます。この方法だとブックをOPEN毎に画面が入れ替わるのです。また、LANネットワークでデータブックにOPENをかけるので時間を要し、画面が入れ替わるのがスローでみっともない状態になってしまうのです。

関連するQ&A