[リストへもどる]
一括表示

投稿時間:2003/02/13(Thu) 20:18
投稿者名:素人さん
Eメール:
URL :
タイトル:
Excelがメモリに残る
VBからExcelを起動して、終了させてもExcelがメモリに残っています。
セルの削除部分をコメントアウトすると、メモリからも消えるのですが、
セルを削除すると、メモリに残ってます。
何が悪いんでしょうか?
宜しくお願い致します。

VB6Pro sp5 + Excel2000 Windows2000/NT4

Public xlsApp   As Excel.Application
Public xlsBook  As Excel.Workbook
Public xlsSheet As Excel.Worksheet

    'Excelの起動
    Set xlsApp = CreateObject("Excel.Application")
    Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\test.xls")
    Set xlsSheet = xlsBook.Worksheets(1)

'----ここから
    Rows("9:19").Select
    Selection.ClearContents
    Range("A1").Select
'----ここまでをコメントアウトするときちんと終了する

    'Excelの保存と終了
    xlsBook.Save
    xlsApp.Quit
    DoEvents

    'Excelの開放
    Set xlsSheet = Nothing
    Set xlsBook = Nothing
    Set xlsApp = Nothing

投稿時間:2003/02/13(Thu) 21:10
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excelがメモリに残る
> '----ここから
>     Rows("9:19").Select
>     Selection.ClearContents
>     Range("A1").Select
> '----ここまでをコメントアウトするときちんと終了する

ここでExcel関係の質問をされるならまず[Excel&Word関係]には目を通しておいて下さい。
その中の[VBからExcel及びWordを操作する時の注意事項(最初に必ずお読み下さい)]に解決方法が
あります。
コピペせずコードを手で打つと自動メンバ表示機能が働きますのでミスが解りやすいかと思います。
この部分は何を使用とされているのか解りませんが、一度マクロを取って見て下さい。
マクロ使用時は上記の事に注意して下さい。

投稿時間:2003/02/13(Thu) 23:57
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: Excelがメモリに残る
'----ここから
    xlsSheet.Range("9:19").ClearContents
    xlsSheet.Range("A1").Select
'----ここまでをコメントアウトするときちんと終了する

投稿時間:2003/02/14(Fri) 08:46
投稿者名:素人さん
Eメール:
URL :
タイトル:
Re^2: Excelがメモリに残る
> '----ここから
>     xlsSheet.Range("9:19").ClearContents
>     xlsSheet.Range("A1").Select
> '----ここまでをコメントアウトするときちんと終了する

単純に選択した範囲のセルデータをクリアするだけのコードなんですが、

xlsSheet.Range("9:300").EntireRow.Delete

と行を削除すると、きちんとメモリからも削除されるようです。
何故クリアだと駄目なんでしょうね??

投稿時間:2003/02/14(Fri) 10:28
投稿者名:A221
Eメール:
URL :
タイトル:
Re^3: それはね
> と行を削除すると、きちんとメモリからも削除されるようです。
> 何故クリアだと駄目なんでしょうね??

クリアとかデリートとかの手法論ではありません。

>     Rows("9:19").Select
>     Selection.ClearContents
>     Range("A1").Select
これでは、VB内では宣言されてないので、何のオブジェクトの
Row,Selection,Rangeなのかはっきりしていませんね?

>    xlsSheet.Range("9:19").ClearContents
>    xlsSheet.Range("A1").Select
一方こちらはxlsSheetがVBで明示的にはっきりと宣言されています。

>>ここでExcel関係の質問をされるならまず[Excel&Word関係]には目を通しておいて下さい。
>>その中の[VBからExcel及びWordを操作する時の注意事項(最初に必ずお読み下さい)]に解決方法が
あります。

ちゃんと読みましたか?

投稿時間:2003/02/14(Fri) 12:22
投稿者名:素人さん
Eメール:
URL :
タイトル:
Re^4: それはね
皆さんすみません。
回答有難う御座いました。
以後注意します。

> >     Rows("9:19").Select
> >     Selection.ClearContents
> >     Range("A1").Select
上のコードは
With xlsSheet
     .Rows("9:19").Select
     Selection.ClearContents
     .Range("A1").Select
End With
です。With部を書くのわせれてました。
すみません。

> >    xlsSheet.Range("9:19").ClearContents
> >    xlsSheet.Range("A1").Select
この方法でも試しましたが、状況は変わりませんでした。
ここでいう状況は。
> > 一度だけなら見た目、解りませんが、再度続けて実行するとエラーが発生するか?
> > 残ってしまいます。又、他の操作がからむと残ります。
の通りです。

データを削除するのだから
xlsSheet.Range("9:300").EntireRow.Delete
で試したところ、メモリからも無くなりました。
この方法だと罫線等も削除されてしまうので、前者の方法のほうが
私としてはいいのですが、
何故、メモリに残ってしまうのでしょうか?

投稿時間:2003/02/14(Fri) 13:07
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: それはね
> > >    xlsSheet.Range("9:19").ClearContents
> > >    xlsSheet.Range("A1").Select
> この方法でも試しましたが、状況は変わりませんでした。

だったら、原因は他にもあるのではないですか?
上記の部分では私の環境では開放されていますよ

トラブッタ場合は正しいコード(全体のコード含む)を提示されないと
解決が長引きますよ!

投稿時間:2003/02/14(Fri) 13:19
投稿者名:A221
Eメール:
URL :
タイトル:
Re^5: それはね
> With xlsSheet
>      .Rows("9:19").Select
>      Selection.ClearContents
>      .Range("A1").Select
> End With
> です。With部を書くのわせれてました。
> すみません。

SelectionオブジェクトはApplicationオブジェクトの下位に当たります。

したがって、このような表記になります。
xlsApp.Selection.ClearContents

#前述どおり手法論ではありません。
#オブジェクトを明示的に宣言するという基本が足りていないのです。

投稿時間:2003/02/14(Fri) 10:53
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: Excelがメモリに残る
> > '----ここから
> >     xlsSheet.Range("9:19").ClearContents
> >     xlsSheet.Range("A1").Select
> > '----ここまでをコメントアウトするときちんと終了する
>
> 単純に選択した範囲のセルデータをクリアするだけのコードなんですが、
>
> xlsSheet.Range("9:300").EntireRow.Delete
>
> と行を削除すると、きちんとメモリからも削除されるようです。
> 何故クリアだと駄目なんでしょうね??

まず、マナーとして質問に対する回答をもらったらお礼を言いましょう。
(小さな子供でも、ちゃんと、ありがとうって、お礼いいますよ!)
それと、私の回答で問題が解決できたのでしょうか?
きちんと、その辺も書いて頂かないと、ぱっと見た人は、花ちゃん又、怪答して
いるって思われるので、(私の怪答はいつもの事ですが)
上記の件は、私の回答に限らず、一般掲示板においても最低限のマナーかと思います。
後はA221さんが書いておられるので!

投稿時間:2003/02/14(Fri) 09:23
投稿者名:killer
Eメール:
URL :
タイトル:
Re: Excelがメモリに残る
> VBからExcelを起動して、終了させてもExcelがメモリに残っています。
> セルの削除部分をコメントアウトすると、メモリからも消えるのですが、
> セルを削除すると、メモリに残ってます。
> 何が悪いんでしょうか?
> 宜しくお願い致します。
>
> VB6Pro sp5 + Excel2000 Windows2000/NT4
>
> Public xlsApp   As Excel.Application
> Public xlsBook  As Excel.Workbook
> Public xlsSheet As Excel.Worksheet
>
>     'Excelの起動
>     Set xlsApp = CreateObject("Excel.Application")
>     Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\test.xls")
>     Set xlsSheet = xlsBook.Worksheets(1)
>
> '----ここから
>     Rows("9:19").Select
>     Selection.ClearContents
>     Range("A1").Select
> '----ここまでをコメントアウトするときちんと終了する
>
>     'Excelの保存と終了
>     xlsBook.Save
>     xlsApp.Quit
>     DoEvents
>
>     'Excelの開放
>     Set xlsSheet = Nothing
>     Set xlsBook = Nothing
>     Set xlsApp = Nothing

 上記のコードを実行してもメモリに残らなかったけどなぁー・・・
 ただオイラなら下記のようにコードは書くかな?
 素人さんのコードはなんでエクセルのオブジェクトを3つも使ってるの?
 1つで十分なような気するけど・・・

Dim objXLS  As Object
    
    Set objXLS = CreateObject("Excel.application")
    objXLS.Application.Workbooks.Open (App.Path & "\test.xls")
    objXLS.Worksheets(1).Select

    objXLS.Application.Rows("9:19").Select
    objXLS.Application.Selection.ClearContents
    objXLS.Application.Range("A1").Select
    
    objXLS.Save
    objXLS.Quit
    Set objXLS = Nothing