tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: VB2008で、単一のExcel.Shapesオブジェクトの取得方法
投稿日: 2009/09/09(Wed) 16:41
投稿者camputer
 すいません、自分の説明が一箇所分かりにくそうだったので、補足させてください。。。

<コード1>
    For Each MyChartObject in MyChartObjects

    Next


<コード1’>
    Dim iChartMax As Integer = MyChartObjects.Count
    For iChart = 1 To iChartMax
    MyChartObject = MyChartObjects.Item(iChart)

    Next
に変更すると、<test1-a>、<test1-b>、<test2-a>、<test2-b>の
いずれの書き方で開放されるようになりました・・・という部分についてですが、
<コード1>と<test 〜>は同じサブルーチン内ですが、ぜんぜん違う場所にあります。
(どちらも同じ
       For iSheet = 1 To iSheetMax
                xlSheet = xlSheets(iSheet)
         '<ここの処理です>
       Next
 の中ではありますが。。。)


 なぜか分からないのですが、<コード1>の書き方だと、それとは別の場所にある
                If Len(tbox.AlternativeText) > 0 Then 〜
が原因でExcel.EXEが解放されず、
                Dim tboxAlternativeText As String = tbox.AlternativeText
                If Len(tboxAlternativeText) > 0 Then 〜
とすると開放されるようになります。
<コード1>を<コード1’>に書き換えると、なぜか
                If Len(tbox.AlternativeText) > 0 Then 〜
でも解放されるようになります。。。


 昨日の夜、
If myApp.Version <= 11 Then
を追加すると、この行でまたなぜか解放されなくなりました。。。orz
Integerのはずなのですが。。。???
下のようにするとExcel.EXEが解放されました。
    Dim myAppVersion As Object = myApp.Version
    If myAppVersion <= 11 Then
                
    End If   'If Err.Number = 0 Then
    MRComObject(myAppVersion)

 タイトルの内容を解決後も、沢山のアドバイスをいただき
本当にどうもありがとうございました。再三のアドバイスをいただけたおかげで
修正の方向がはっきりしましたので、なんとか自力で原因究明したく
この後も解明に努めます。解明できましたら、ご報告させていただきます。
 もしまた何かよさそうなテストの方法等ございましたら、アドバイスいただけると
幸いでございます。  Camputer.

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。