• 締切済み

複数のバージョンの Office 対応 Adviseで「0x80040200」エラー

複数のバージョンの Office(Word,Excel,PPT) で active イベントが起きた際にメソッドを呼び出すプログラムを作成しておりますが(下記参照)、Wordに限り下記の部分でエラー「HRESULTからの例外:0x80040200」が起きます。 ocon.Advise(Me, m_Cookie) oConnPointContainer.FindConnectionPoint(guid, ocon)でエラーとなっていないのでGuidに間違いはないと思いますしなぜエラーとなるのでしょうか? なおPPTの場合、 Dim guid As New Guid("914934C2-5A91-11CF-8700-00AA0060263B") Wordの場合、 Dim guid As New Guid("00020A01-0000-0000-C000-000000000046") を使用してテストしてます。 テスト環境はWinXP+Office2003+VisualStudio2008です。 ------------------------------------------------------------- Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection Dim ocon As IConnectionPoint Try Dim oConnPointContainer As IConnectionPointContainer oConnPointContainer = CType(application, IConnectionPointContainer) Dim guid As New Guid("914934C2-5A91-11CF-8700-00AA0060263B") 'Dim guid As New Guid("00020A01-0000-0000-C000-000000000046") oConnPointContainer.FindConnectionPoint(guid, ocon) ocon.Advise(Me, m_Cookie) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub ------------------------------------------------------------- 非常に困ってます。よろしくお願いいたします。

みんなの回答

  • cross22
  • ベストアンサー率66% (4/6)
回答No.1

この手の質問なら、 MSDNフォーラムで質問された方がいいのではないでしょうか? こういうこと言っちゃ駄目かな・・・ あと、ただの勘なので全く参考になりませんが、 ワードのアセンブリがインストールされてない とかはないですか?

参考URL:
http://msdn.microsoft.com/ja-jp/library/15s06t57(VS.80).aspx

関連するQ&A

  • VBでエクセルを操作(オートフィルタ)

    CSVファイルをエクセルで開き、A列にオートフィルタをかけます。TextBox1に入力した項目と一致させるために、下のようなものをつくってみました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim app As Object Dim book As Object Dim sheet As Object app = CreateObject("Excel.Application") app.application.visible = True book = app.Workbooks.Open("C:\XXXX.csv") sheet = book.Worksheets(1) With sheet.Range("A1") If .AutoFilter Then .AutoFilter(field:=1, Criteria1:="TextBox1.text") End With End Sub Textbox1に入力して実行してもヒットしません。 "TextBox1.Text"の代わりに、A列にある項目を入れると、正常にオートフィルタが実行されます。 皆様教えて下さい。よろしくお願い致します。

  • 参照設定 VBAで行ないたいのですが

    参照設定で[Microsoft Visual Basic Application Extensibility]をチェックを VBAで行ないたいのですが Sub test() Dim Ref As Reference 'Excel Set Ref = References.AddFromGuid("{00020813-0000-0000-C000-000000000046}", 1, 7) Set Ref = Nothing End Sub のようになるとしたら、どうすればいいのでしょうか? エクセルの参照設定の仕方はネットからコピーしたもので、 やりたい参照設定のパスの調べ方がわかりません。 ("{00020813-0000-0000-C000-000000000046}", 1, 7) が何を意味するのか、何の情報かわからない為 [Microsoft Visual Basic Application Extensibility]についてもわかりません。 アクセス2010です。

  • プロシージャまたは関数の引数が多すぎますのエラー

    お世話になります。 下記のコードを実行すると プロシージャまたは関数 spTest の引数が多すぎます どこが悪いのかご教示お願いいたします。 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer Dim conn As New SqlConnection(connstr) Dim cmd As New SqlCommand conn.Open() cmd.Connection = conn cmd.CommandText = "Delete Table2" cmd.CommandType = CommandType.Text Debug.WriteLine(cmd.ExecuteNonQuery()) For i = 1 To 100 spTest(cmd, i) Next conn.Close() End Sub sub spTest(ByRef cmd As SqlCommand, ByVal intID As Integer) Dim param As SqlParameter With cmd .CommandType = CommandType.StoredProcedure .CommandText = "spTest" param = .Parameters.Add(New _ SqlParameter("@ID", SqlDbType.Int)) param.Value = intID .ExecuteNonQuery()    ''''' ここで2回目からエラーが発生します End With End sub

  • VB2005複数のキーワードから

    VB2005入門者です。 カンマ区切りのテキスト"C:\DATA.txt"からキーワード"POINT"と"AA"をもとに 数値 "1" を検出し変数"answer"に格納したい場合 ------------------------------ POINT , AA , 1 , 2 , 3 , 4 POINT , AB , 5 , 6 , 7 , 8 NUM , AA , 9 , 10 , 11 , 12 NUM , AA , 13 , 14 , 15 , 16 POINT , AC , 17 , 18 , 19 , 20 ・'以下続く ・ ・ ------------------------------ 下記に何を加えればよいのでしょうか。 Private Sub Form3_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim reader As New System.IO.StreamReader("C:\DATA.txt", System.Text.Encoding.Default) Dim line As String Dim Field() As String Dim answer As Integer Do Until reader.EndOfStream line = reader.ReadLine() Field = line.Split(",") If Field(0) = "POINT" Then answer = Field(2) End If Loop End Sub ちなみに If Field(0) = "POINT" and Field(1) = "AA" Then ←ではエラーがでました。。。 又、同様のケースで10項目の処理を続けて行い、"answer"にカンマ区切りのまま続けて格納 したい場合はどのようにすればいいのでしょうか。 イメージは最後にexcelに貼り付けていきたいです。

  • 構造体 多段階配列について

    Private Structure test Dim a As Integer Dim b As String Dim c as String End Structure Dim a() As test = New test(2) {} Dim b() As test = New test(2) {} Dim c()() As test c = New test()() {a, b} Dim temp() as integer cは多段階配列で、 例えば、c(0)のメンバaのデータをすべて取り出したい 時はどうすればよろしいのでしょうか? //気持ち的にはこのようにしたいのですが、 できません。 temp = c(0).a どなたか、わかるかた、教えてください。 よろしくお願いします。

  • VBA ウィンドウの列挙 Win32 API

    http://d.hatena.ne.jp/cartooh/20090618 上記のページに記載されているVBAです。 動作は確認できたのですが、どのような処理の流れとなっているのかがわかりません。 どなたかコメントを付けていただけないでしょうか。 よろしくお願いいたします。 Option Explicit Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal cnm As String, ByVal cap As String) As Long Declare Function IsWindowVisible Lib "user32" (ByVal hWnd As Long) As Long Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, _ ByVal cch As Long) As Long Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, _ ByVal nMaxCount As Long) As Long Declare Function EnumWindows Lib "user32" (ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long Declare Function EnumChildWindows Lib "user32" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, _ ByVal lParam As Long) As Long Declare Function IsWindow Lib "user32" (ByVal hWnd As Long) As Long Const INDENT_KEY = "INDENT" Public Function EnumChildWindowsProc(ByVal hWnd As Long, ByVal lParam As Object) As Long EnumChildWindowsProc = EnumWindowsProc(hWnd, lParam) End Function Public Function EnumWindowsProc(ByVal hWnd As Long, ByVal lParam As Object) As Long EnumWindowsProc = True If IsWindowVisible(hWnd) = 0 Then Exit Function End If Dim strClassName As String ' * 255 Dim strCaption As String ' * 255 strClassName = String(255, vbNullChar) strCaption = String(255, vbNullChar) GetWindowText hWnd, strCaption, Len(strCaption) GetClassName hWnd, strClassName, Len(strClassName) strCaption = RTrim(left(strCaption, InStr(1, strCaption, vbNullChar) - 1)) strClassName = RTrim(left(strClassName, InStr(1, strClassName, vbNullChar) - 1)) ActiveCell.Cells(1, 1).Value = Hex(hWnd) ActiveCell.Cells(1, 2).Value = IsWindowVisible(hWnd) ActiveCell.Cells(1, 3).Value = strCaption ActiveCell.Cells(1, 4).Value = strClassName ActiveCell.Cells(2, 2).Activate Dim c As Collection Set c = lParam Dim indent As Long indent = c(INDENT_KEY) c.Add String(indent * 2, " ") & Hex(hWnd) & " " & strCaption & " " & strClassName, before:=c.Count indent = indent + 1 c.Remove INDENT_KEY c.Add indent, INDENT_KEY Call EnumChildWindows(hWnd, AddressOf EnumChildWindowsProc, ObjPtr(c)) indent = c(INDENT_KEY) - 1 c.Remove INDENT_KEY c.Add indent, INDENT_KEY ActiveCell.Cells(1, 0).Activate End Function Sub hoge() Application.ScreenUpdating = False Dim sht As Worksheet Set sht = ThisWorkbook.Worksheets(1) sht.UsedRange.Clear sht.Activate sht.Range("A1").Activate Dim c As Collection Set c = New Collection c.Add 0, INDENT_KEY Dim ret As Long ret = EnumWindows(AddressOf EnumWindowsProc, ObjPtr(c)) c.Remove INDENT_KEY Set sht = ThisWorkbook.Worksheets(2) sht.UsedRange.Clear sht.Activate sht.Range("A1").Activate Dim o As Variant For Each o In c ActiveCell.Value = o ActiveCell.Cells(2, 1).Activate Next Application.ScreenUpdating = True End Sub

  • 【vb.net】クラス化について

    大学で以下のような練習問題を頂きました。 ----- Public Sub test()  Dim a As b = New c  Dim i As Integer = 1  a.disp(i) End Sub 問:この時のbとcを実装せよ。 ----- Public Class c  Public Function disp(ByVal i As Integer) As String   return "iは" & i & "です"  End Function End Class までは書いてみたのですが、b の扱いがどうもわかりません。 どなたか教えていただけませんでしょうか。

  • excelのマクロで音声の停止と再生

    excelのマクロでいくつかのwavファイルを音声再生途中で一時停止と、その途中からの音声再生はどのようにすればよいのでしょうか? Declare Function PlaySound Lib "Winmm.dll" Alias "PlaySoundA" _ (ByVal pszSound As String, _ ByVal hmod As Long, _ ByVal fdwSound As Long) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Public Const SND_ASYNC = &H1& '再生後すぐに制御を戻す Public Const SND_SYNC = &H0& '再生が完了するまで制御を戻さない Private Function MusicLength(ByVal FilePath As String) As Date Dim oSH As Object, oFS As Object, oFLD As Object, oF As Object Dim sT As Date Set oSH = CreateObject("Shell.Application") Set oFS = CreateObject("Scripting.FileSystemObject") Set oF = oFS.getfile(FilePath) Set oFLD = oSH.Namespace(oF.ParentFolder.Path) sT = CDate(oFLD.GetDetailsOf(oFLD.ParseName(oF.Name), 27)) MusicLength = sT + #12:00:01 AM# End Function Sub A列再生() Dim En As Long, i As Long Dim INF As String Dim ML As Date, sT As Date En = Range("A65536").End(xlUp).Row For i = 2 To En INF = ThisWorkbook.Path & "\ONSEI\" & Range("A" & i).Value & ".WAV" ML = MusicLength(INF) PlaySound INF, 0, SND_ASYNC ' sT = Now Do Until Now > sT + ML Sleep 100

  • Excel VBAで呼び出したWordが文書への差し込みボタンが効かない状態で開く

    以下のExcel VBAでWordは開くのですが、新規文書への差し込みボタンが、活きていないです。参照設定は、Microsoft Word 11.0 Object Libraryを入れています。 どうしたらいいのでしょうか?困っています。 Sub Wordを開き、差し込み印刷する() Dim ワード As Object Dim ワード文書 As Object Dim フルパス As String フルパス = "D:\案内状.doc"          'フルパスを作成 Set ワード = CreateObject("Word.Application") 'Wordを起動 ワード.Visible =True 'Wordを表示 Set ワード文書 = ワード.documents.Open(フルパス) 'Word文書を開く End Sub

  • SerialPort処理でInvokeメソッドを使用するとエラーが発生。

    はじめまして。こんばんわ。 同一プロジェクトの複数のフォームから、RS232C接続処理を行っております。 まったく同じ処理内容なので、クラスを使用しようとしております。 しかし、データ受信時、Invokeメソッドを使用して、各フォームのイベントをCALLしますと、『InvalidOperationException』が発生し、『ウィンドウ ハンドルが作成される前、コントロールで Invoke または BeginInvoke を呼び出せません。』というエラーメッセージが表示されてしまいます。 ソースを下記に記載いたします。どなたか、原因・対処方法がわかる方がいらっしゃいましたら、御手数をおかけいたしますが、ご教示の程、よろしくお願い申し上げます。 ============================== 呼び出し元フォーム ============================== Public Class Form1   Private cls232CIns As cls232C   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click     cls232CIns.openport()   End Sub   Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load     cls232CIns = New cls232C()   End Sub   Public Sub DispData(ByVal data As String)     TextBox1.Text = data   End Sub End Class ============================== SerialPort通信クラス ============================== Imports System.IO.Ports Public Class cls232C   WithEvents SP1 As SerialPort   Delegate Sub RecvDataDisp(ByVal dataR As String)   Public Sub New()     SP1 = New SerialPort("COM6", 9600)   End Sub   Public Sub openport()     SP1.Open()   End Sub   Public Sub closeport()     SP1.Close()   End Sub   Public Sub ReceiveData(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SP1.DataReceived     Dim getdata As String     getdata = SP1.ReadLine     Form1.Invoke(New RecvDataDisp(AddressOf Form1.DispData), getdata) ←ここでエラー発生   End Sub End Class