掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
EXCELが終了しません。 (ID:119825)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> 終了してもEXCELが残ったままという現象をよく耳にしますが、 VB6なら、その手の問題は「参照設定せずとも動作するコード」に 書き換えれば、たいていは直りますよ。 Excelを参照設定せず、かつ、Option Explicit がある状態にしておけば、 問題のある行(今回はCopyの行)でエラーになるので、発見しやすいです。 > ObjExcel.Sheets("Sheet1").Copy after:=Sheets("Sheet1") 最初のSheet1は、ObjExcel.Sheets("Sheet1") と指定しているのに、 その次のSheet1は、単に Sheets("Sheet1") としか指定していませんよね。 これが終了しない原因。 Excel上からであれば「自分自身」のSheet1である事が明確ですが、 VBからの操作だと、どこのSheet1かが曖昧になるため、暗黙で Excelのオブジェクトが新規に作成されてしまい、それが原因で 終了しなくなります。 さらにいうと、「objExcel.Sheets("Sheet1")」という表現も、どのワークブック上のSheet1なのかが曖昧なので、止めたほうが良いです。 Set objWB = ObjExcel.Workbooks.Open("C:\test.xls") のように、Workbookオブジェクトを取得しておいた上で、「objWB.Sheets("Sheet1")」のような指定を使いましょう。 > ObjExcel.Sheets("Sheet1").Select Select/Selection/Active系のプロパティやメソッドも、極力使わないようにしましょう。 VB6でも、 Text1.Text = "TEST" の事を、 Text1.SetFocus ActiveControl.Text = "TEST" などとは書きませんよね? それと同じことです。 Selectメソッドなどを使って操作すると、動作が遅くなる上、その後のユーザー操作など(別のワークシートが開かれたりするなど)によって、別のオブジェクトが選択される危険性がありますから、多用しない方が安全です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.