2009-05-08 72 views
3

VBまたはC#の.NetからAccess 2007を自動化するのに問題があります。私がしたいのは、.NetのAccessモジュールのサブルーチンを呼び出すことだけです。.Netからアクセスモジュールの呼び出しルーチン?

最終的にはVBで動作させる必要がありますが、私は両方とも同じ結果を試しています。

以下はVBテストフォームのコードです。これは、エラーが発生:

System.Runtime.InteropServices.COMException(0x800A9D9F):HRESULTからの例外:Microsoft.Office.Interop.Access.ApplicationClass.Runで0x800A9D9F(文字列手順、オブジェクト& ARG1は、& ARG2オブジェクト、 ...、Object & Arg30)

My testのSubは、「MyTest」という名前で、Module1という名前のモジュールです。テーブル内に1つのレコードを挿入するだけです。それはアクセス内から正常に動作します。私は "Module1.MyTest"、 "MyTest()"、 "MyTestを呼び出す"など、さまざまな順列を試みました。

Access(および他のOfficeアプリケーション)の自動化のネット上でいくつかの例が見つかりましたが、動作するようには見えません。誰かが私に実例を指摘できたら、私は感謝します。

サンプルコード:

Imports Access = Microsoft.Office.Interop.Access 
Imports Microsoft.Office.Core 

Public Class FormTest 
    Private Sub cmdTest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdTest.Click 

     Dim aa As New Access.Application() 

     Try 
      aa.OpenCurrentDatabase("c:\Test.accdb") 
      aa.Run("MyTest") 
     Catch ex As Exception 
      MsgBox(ex.ToString()) 
     Finally 
      If aa IsNot Nothing Then 
       aa.Quit(Access.AcQuitOption.acQuitSaveNone) 
      End If 
      Me.Close() 
     End Try 

    End Sub 
End Class 

答えて

2

セキュリティ上の問題でした。 Accessでは、すべてのセキュリティチェックをオフにする必要がありました。私がそれをしたら、それはうまくいった。

+0

Access 2007のトラストセンターを介してMDBを信頼する場所に追加しました。 –

+0

これはどのように行いましたか? – CamronBute

+0

@CamronBute [あなたはMicrosoftからAccess 2007のためにこれらの指示を使うことができます](http://office.microsoft.com/en-us/word-help/create-remove-or-change-a-trusted-location-for- your-files-HA010031999.aspx#BM11)。 –

0

はのInnerException(エラーの実際の理由を)見てみてください。

また、VB6を知っている場合は、VB6で同じコードを書き込んでみてください&これが機能するかどうかを確認してください。
エラーが発生しない場合は、VB.netでも同じように動作します。

EDIT:MyTestはパブリックメソッドですか?

+0

InnerExceptionがnullです。私はVB6を持っていませんが、FoxProからこれを試してみました。 aa = CREATEOBJECT( "Access.Application") 実行時に「OLEエラーコード0x800A9D9F:不明なCOMステータスコード」が表示されます。 – Rob3C

0

アクセスプロシージャの目的がアクセスファイルのテーブルを操作する場合は、.mdbファイルへのODBCまたはOLEDB接続を開いてから、テーブルを直接開くか、レコードセットを作成し、それを操作するか、対応するSQL命令を送信しますか?

少なくとも、Accessの新しいインスタンスを作成するのに必要なすべての時間を節約します。

関連する問題