タイトル : Re^2: VB2005からPowerPoint2007へのリンク貼付操作 投稿日 : 2008/10/02(Thu) 17:53 投稿者 : アップルティー
> 回答ではありません。何方からもレスがないようなので...。 お忙しいところ、わざわざありがとうございます。 > エラーメッセージをキーに検索されたら、結構同じ事例のようなのがヒット > しましたので、ご自分の環境等で思い当たる事がないか調べてみてはどうでしょうか? 基本的に調査してどうしようもなかった場合のみ、掲示板に書き込みをしています。 安易な書き込みは極力避けているつもりです。 > バージョンによって動く場合と動かない場合があるのなら、引数の個数や型が > 代わっていないか確認されてみては。 パラメータについては全部とは言いませんが、多くのパターンを試しております。 しかし、いずれの場合も欲する結果ではありませんでした。 > 又、COMオブジェクトの解放処理等はどのようにされているでしょうか? > タスクマネージャに沢山残っているという事はありませんか。 タスクマネージャに残っているという現象はありません。 こちらのHPを見て、COMオブジェクトのインスタンスの解放については十分に注意しているつもりです。 また、一例ですが解放処理については以下のようなコード記述を行っております。 (ReleaseObject()メソッドについてはこちらのHPのMRComObject()と同様の処理です。) ''' 対象のスライドのタイトルに値を設定する Protected Sub SetTitle(ByVal pptSlide As PowerPoint.Slide, ByVal title As String) Dim pptShapes As PowerPoint.Shapes = pptSlide.Shapes Try If pptShapes.HasTitle <> Microsoft.Office.Core.MsoTriState.msoTrue Then Return Dim pptShape As PowerPoint.Shape = pptShapes.Title Try Dim pptTextFrame As PowerPoint.TextFrame = pptShape.TextFrame Try Dim pptTextRange As PowerPoint.TextRange = pptTextFrame.TextRange Try pptTextRange.Text = title Finally Me.ReleaseObject(pptTextRange) End Try Finally Me.ReleaseObject(pptTextFrame) End Try Finally Me.ReleaseObject(pptShape) End Try Finally Me.ReleaseObject(pptShapes) End Try End Sub ''' COMオブジェクトの解放をする。 Protected Sub ReleaseObject(Of T As Class)(ByRef objCom As T, Optional ByVal force As Boolean = True) If objCom Is Nothing Then Return Try If System.Runtime.InteropServices.Marshal.IsComObject(objCom) Then If force Then System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objCom) Else Dim count As Integer = System.Runtime.InteropServices.Marshal.ReleaseComObject(objCom) End If End If Finally objCom = Nothing End Try End Sub また、COMオブジェクトのメソッドを使用する際、対象のメソッドに戻り値があればそれも取得し上記同様の解放処理を行っております。 |