tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re: Excelが既に開いている時
投稿日: 2009/08/03(Mon) 16:47
投稿者魔界の仮面弁士
> Excelが既に開いている時に下の物を実行すると、
> Excelが二つ開いてしまいます。現状開いているExcelで
> ファイルを開きたいのですがどうすれば良いですか?

自分で生成したものであるならば、2 回目以降は CreateObject せず、
先の exl 変数を使い回せば良いとおもいます。


自分以外によって起動された Excel を利用したい、という意味であれば、
 Set exl = GetObject( , "Excel.Application")
のようにして、既に起動済みの Excel を捉えることができます。

ただし、起動済みの Excel が無い場合、この GetObject は失敗しますので、
その場合には On Error でエラー処理をして、CreateObject で
Excel を起動するようにしてみてください。


>     With exl
>         .Application.Visible = True
Application プロパティは、冗長なので使わないようにしましょう。
たとえば下記は、いずれも全く同じ意味を持ちます。
 exl.Visible = True
 exl.Application.Visible = True
 exl.Application.Application.Visible = True


>         .Workbooks.Open ("C:\TEST.XLS")
VB6 では、引数を取らないメソッドの呼び出しには括弧をつけてはいけません。

この場合には、
 .Workbooks.Open "C:\TEST.XLS"
と記述するのが正しいです。

もしも括弧をつけたいなら、
 Call .Workbooks.Open("C:\TEST.XLS")
あるいは
 Set book = .Workbooks.Open("C:\TEST.XLS")
という記述法を使わねばなりません。

現在、括弧をつけても動作していたのは、たまたま引数が一個だけだったため、
 Set book = .Workbooks.Open( ("C:\TEST.XLS") )
の意味で解釈されただけに過ぎません。

もしも引数が 2 個だった場合、
 .Workbooks.Open "C:\TEST.XLS", 1
は動作しますが、
 .Workbooks.Open("C:\TEST.XLS", 1)
だと、VB6 ではエラーになる事に注意してください。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。