WindowsXP, VB6.0SP6, Excel XP, Excel2003
帳票発行でExcelを使用しています。
VBでパラメータを入力させ、開始ボタンを押すとExcelのパラメータ用シート
のセルへそのパラメータを書き込み、VBからマクロを起動すると言う手順で
処理しています。
Excelマクロ(VBA)の作成はExcelXPで行い、問題無く動作しました。
VB+ExcelXPの組合せでは全く問題無く動作しています。
ちなみにExcel2000の場合でも問題無く動作します。
そのマクロをExcel2003で動作させる必要があり、なんら手を加えることなく
VB6+Excel2003で動かしたところ一見問題無く動作しました。
が、Excelのマクロが終わり、起動元のVBプログラムも終了し、望みの帳票が
Excelシート上に出来上がっても、タスクマネージャのCPU使用率が100%に
なったままなんです。
VB6側のExcelとのやり取りの部分は
' ********** Excel Start****************************
Dim xlApp As Excel.Application ' オブジェクト変数宣言
Set xlApp = New Excel.Application ' オブジェクト変数の代入
xlApp.Workbooks.Open (ini_XLS & "hogehoge.xls")
xlApp.Worksheets("parm").Cells(1, 1).Value = AC 'パラメータ書込み
xlApp.Worksheets("parm").Cells(1, 2).Value = AD
xlApp.Worksheets("parm").Cells(1, 3).Value = BStart
xlApp.Worksheets("parm").Cells(1, 4).Value = BEnd
xlApp.Worksheets("parm").Cells(1, 5).Value = KStart
xlApp.Worksheets("parm").Cells(1, 6).Value = KEnd
xlApp.Visible = True
xlApp.Run ("sub_hoge") 'マクロ(サブプログラム)起動
xlApp.Windows("hogehoge.XLS").Close (False)
'xlApp.Visible = True
xlApp.Quit
Set xlApp = Nothing
' ********** Excel End***********************************
Excel側マクロ(VBA)
新しいBookを作成し、パラメータに応じた帳票をその新しいBookの中に作成
取敢えず画面上で動きが見えるようにExcelは表示しているのですが、そのExcelが
表示されているWindowの上でマウスカーソルを適当にグルグル動かしていると
マクロはスムーズに動いているのですが、マウスカーソルも動かさず、キーボード
もいじらずに見ていると、まるでフリーズしたように止まっているみたいな感じで
す、、、、
但し、そのときもCPU使用率は100%です。(タスクマネージャを表示したまま処理しま
した)
思い当たる節のある方はご教授願えませんでしょうか?
よろしくお願い致します。
> Dim xlApp As Excel.Application ' オブジェクト変数宣言
> Set xlApp = New Excel.Application ' オブジェクト変数の代入
複数のバージョンで動作を想定しているなら
参照設定せずにObject型で処理すべきでは?