タイトル : 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. |