[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/02/01(Tue) 09:34
投稿者名:yuki
Eメール:
URL :
タイトル:
VB6からエクセルを終了させる方法
  いつもお世話になっています。
  ボタン1でエクセルを起動して、ボタン2で終了させたいのですが、
  どのようにしたらよいのでしょうか??
  以下のコードが終了のコードと思っているのですが、
  これでは終了することができません。
  なにとぞよろしくお願いします。
  Dim xlApp  As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim xlSheet As Excel.Worksheet

  xlApp.Quit

  Set xlSheet = Nothing
  Set xlBook = Nothing
  Set xlApp = Nothing

投稿時間:2005/02/01(Tue) 09:49
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: VB6からエクセルを終了させる方法
>   ボタン1でエクセルを起動して、ボタン2で終了させたいのですが、
ボタン1で生成した"Excel.Application" の変数は、
プロシージャ変数(Sub内のDimで定義された)ではなく、
モジュールレベル変数(フォームでPrivate定義された変数)に
しておいてください。

ボタン2からは、そのモジュールレベル変数を再利用する事になります。


>   xlApp.Quit
このxlAppが、ボタン1で生成した Excel.Applicaion オブジェクトと
全く同一の物を指しているのであれば、この行によって正しく終了されます。

それでも終了しないのであれば、このサイトの

 [VBからExcel及びWordを操作する時の注意事項]
 hhttp://www.bcap.co.jp/hanafusa/VBHLP/caution.htm

 [Excel のタスクを正常に終了できない現象]
 hhttp://www.bcap.co.jp/hanafusa/VBHLP/ExcelErr.htm

に該当するコードを書いていないか、よく確認してみてください。

投稿時間:2005/02/01(Tue) 10:32
投稿者名:yuki
Eメール:
URL :
タイトル:
Re^2: VB6からエクセルを終了させる方法
ご返事ありがとうございます。
そうですか。一応該当のコードを調べて修正しましたが、終了することができません。
どうしてなんでしょう??

> >   ボタン1でエクセルを起動して、ボタン2で終了させたいのですが、
> ボタン1で生成した"Excel.Application" の変数は、
> プロシージャ変数(Sub内のDimで定義された)ではなく、
> モジュールレベル変数(フォームでPrivate定義された変数)に
> しておいてください。
>
> ボタン2からは、そのモジュールレベル変数を再利用する事になります。
>
>
> >   xlApp.Quit
> このxlAppが、ボタン1で生成した Excel.Applicaion オブジェクトと
> 全く同一の物を指しているのであれば、この行によって正しく終了されます。
>
> それでも終了しないのであれば、このサイトの
>
>  [VBからExcel及びWordを操作する時の注意事項]
>  hhttp://www.bcap.co.jp/hanafusa/VBHLP/caution.htm
>
>  [Excel のタスクを正常に終了できない現象]
>  hhttp://www.bcap.co.jp/hanafusa/VBHLP/ExcelErr.htm
>
> に該当するコードを書いていないか、よく確認してみてください。

投稿時間:2005/02/01(Tue) 12:21
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: VB6からエクセルを終了させる方法
> そうですか。一応該当のコードを調べて修正しましたが、終了することができません。
> どうしてなんでしょう??

おそらく、「修正しきれていないから」だと思われますが、
ソースコードを見ているわけではありませんので、具体的な回答はできません。


ためしに、ワークブックなどを開かず、単に、「Excelの起動」と「終了」しか
行わないプログラムを作成し、それが期待動作するかどうかを調べてみてください。

Private X As Object
Private Sub Command1_Click()
  Set X = CreateObject("Excel.Application")
  X.Visible = True
End Sub
Private Sub Command2_Click()
  X.Quit
  Set X = Nothing
End Sub

これで終了できなければ、Excel環境側に、何らかの問題があるのでしょう。

逆に、これが正常に終了するのであれば、既存のコードに問題があるのだと思われますので、
既存のコードで、ワークブック/ワークシートを操作している部分のコードを、すべて
コメントアウトしていき、正常に終了するような最低限のコードに置き換えてみましょう。

その後は、それらのコメントを徐々に外していき、どの行を実行すると、
終了しなくなってしまうのかを突き止めてみてください。

投稿時間:2005/02/01(Tue) 23:01
投稿者名:yuki
Eメール:
URL :
タイトル:
Re^4: VB6からエクセルを終了させる方法
返事が遅くなりすみません。
わかりました。上記の方法で試してみます。
ありがとうございます。

投稿時間:2005/02/02(Wed) 08:59
投稿者名:yuki
Eメール:
URL :
タイトル:
Re^5: VB6からエクセルを終了させる方法
あれから試行錯誤して、自己解決しました。
ありがとうございました。
どうやら、ボタン1の方でオブジェクトの解放をしていたみたいでした。
魔界の仮面弁士さん、ありがとうございました。