Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53005 / 76736 ←次へ | 前へ→

【28555】Re:メモリ使用量 補足2
質問  小僧  - 05/9/9(金) 10:39 -

引用なし
パスワード
   ▼みなさま:
おはようございます。

時間を見つけて色々検証している最中ですが、どうしても

Set XX = Nothing

のタイミングで使用メモリが回復する事がないんですよね…。

>ただ、
>sub test()
> dim aa as object
> set aa=createobject("excel.appliaction")
>・
>・
>・
> set aa=nothing
>end sub
>の Set aa=nothing
>
>をしなかったためのトラブルがあったという投稿を私は
>何回か目にした事はあります。


Access等 でのこの手のオートメーションのトラブルは FAQ だと思うのですが、
大概は Nothing に原因があるのではなく、
Set した変数の扱い方に問題がある場合か、上位オブジェクトからの参照

(ExcelVBA を使われている方には当たり前だと思うのですが、
Application - Workbook - Sheet - Cell という使い方)

ができていない場合が多いのではないかと思います。

Sub test1()
On Error GoTo errEXE
Dim objWrd As Object
Dim objDoc As Object

  Set objWrd = CreateObject("Word.Application")
    'objWrd.Visible = True
  Set objDoc = objWrd.Documents.Open("C:\Test.doc")
    objDoc.Characters(1) = "Hello"
    objDoc.Characters(6) = "World"
    objDoc.Characters(999) = "Miss"
    objDoc.Close
    objWrd.Quit
errEXE:
  Set objDoc = Nothing
  Set objWrd = Nothing
End Sub

「C:\Test.doc」というワードファイルを新規で作って上のコードを実行すると
「Miss」の行でエラーになると思います。

On Error で飛ばされた先で「Nothing」があり objWrd は解放されるから大丈夫
かと思いきや、2回目に実行すると読み取り専用になっているかと思われます。

※ 'objWrd.Visible = True のコメントを外すと理由が解ると思います。

CreateObject をした際の後始末に Nothing をしないのがトラブルの原因なのではなく、
Set した変数の扱い方がまずいからトラブルになるのではないでしょうか。


>例えば、
>クラスモジュール(class1)で

こちらも色々やってみたのですが、Nothing する以前の問題で、
Class1 を呼び出した際に使用メモリが増えていますでしょうか?


当方は VB を扱った事もあまりなくこういった分野には全く詳しくないのですが、

メモリ使用量の数値を見ている限りでは、
オブジェクト(よろずやさんの解説によると DLL ?)を呼び出した変数に

Nothing がセットされてからある程度の時間(これが何とも曖昧なんですよね…)

が経つとメモリが回復しているように見えるのですが…。

(という事で Set XX = Nothing でメモリを解放しているわけではない、と言いたいのですが(笑))

0 hits

【28395】メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 14:34 質問
【28396】Re:メモリ使用量 ちくたく 05/9/5(月) 14:53 発言
【28400】Re:メモリ使用量 小僧 05/9/5(月) 16:16 発言
【28401】Re:メモリ使用量 EXCEL_VBA中の下 05/9/5(月) 16:37 発言
【28403】Re:メモリ使用量 小僧 05/9/5(月) 17:39 発言
【28415】Re:メモリ使用量 ichinose 05/9/6(火) 7:59 発言
【28427】Re:メモリ使用量 EXCEL_VBA中の下 05/9/6(火) 14:41 発言
【28447】Re:メモリ使用量 実験1 ichinose 05/9/6(火) 20:28 発言
【28448】Re:メモリ使用量 実験2 ichinose 05/9/6(火) 20:49 発言
【28451】Re:メモリ使用量 補足 ichinose 05/9/7(水) 6:56 発言
【28452】Re:メモリ使用量 補足2 ichinose 05/9/7(水) 8:06 発言
【28453】Re:メモリ使用量 補足2 ちくたく 05/9/7(水) 8:47 回答
【28488】Re:メモリ使用量 補足2 よろずや 05/9/7(水) 22:33 発言
【28499】Re:メモリ使用量 補足2 ichinose 05/9/8(木) 8:32 発言
【28537】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 19:29 発言
【28541】Re:メモリ使用量 補足2 小僧 05/9/8(木) 22:18 質問
【28542】Re:メモリ使用量 補足2 よろずや 05/9/8(木) 22:49 発言
【28544】Re:メモリ使用量 補足2 小僧 05/9/9(金) 0:12 質問
【28545】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 1:36 発言
【28555】Re:メモリ使用量 補足2 小僧 05/9/9(金) 10:39 質問
【28570】Re:メモリ使用量 補足2 よろずや 05/9/9(金) 12:59 発言
【28597】Re:メモリ使用量 補足2 ichinose 05/9/9(金) 17:20 発言
【28598】Re:メモリ使用量 補足2 小僧 05/9/9(金) 17:47 お礼
【28402】Re:メモリ使用量 ちくたく 05/9/5(月) 16:51 発言

53005 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free