Wordからエクセルファイルを開くコードを書いているのですが・・・。
一応エクセルファイルは開いているようですが、なぜか非表示になって
しまいます。
そのあと何か別のエクセルファイルを開こうとすると、一緒に表示されます。
なぜなんでしょう?
書いたコードは以下になります。
(Dドライブの「テスト」フォルダ内の「テスト.xls」を開く場合)
Sub エクセルを開く()
Dim app As New Excel.Application
Dim book As Excel.Workbook
Set book = app.Workbooks.Open("D:\テスト\テスト.xls")
End Sub
単純にエクセルが開いて目の前に表示されてほしいだけなのですが・・・。
Wordがそのまま表示されています。
また、Wordは画面全体に表示させてないので、後ろに表示されていれば
分かるのですが、後ろにも表示されていません。
でも、何か別のエクセルファイルを普通にクリックして開こうとすると、一緒
に該当の「テスト」も表示されるという訳です。
どうしてでしょうか?
どのようにコードを書けばいいのでしょうか?
よろしくお願い致します。
こういうのはたくさんWEBに例が載っている。
http://homepage1.nifty.com/rucio/main/technique/teq_15.htm ほか。
Sub test16()
Dim ExcelApp As Object 'Excel.Application
Dim Book As Object 'Excel.Workbook
Dim Sheet As Object 'Excel.Worksheet
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = True
Set Book = ExcelApp.Workbooks.Add
Set Sheet = Book.Worksheets(1)
Sheet.Range("B5").Value = "Hello!"
'Book.SaveAs ("C:\VBExcel.xls")
End Sub
でどうですか。
ーーー
質問のそのままの例では
Dim app As New Excel.Application でエラーになった。
New関係は理屈か難しいので、VBAではとりあえず動くほう(CreateObject)をまねし、将来違いなど勉強されたら良い。
http://hanatyan.sakura.ne.jp/vbhlp/caution.htmhttp://www.moug.net/tech/acvba/0060028.htm
こういったものでよいのでしょうか?
Sub Sample()
Dim TempFileName As String
TempFileName = "D:\テスト\テスト.xls"
With CreateObject("Excel.Application")
.Workbooks.Open TempFileName
.Visible = True
End With
End Sub
上記の内容はこちら↓を参考にしています。
http://www.moug.net/tech/exvba/0150093.htm