2009-05-08 4 views
3

.Net, VB 또는 C#에서 Access 2007을 자동화하는 데 문제가 있습니다. 내가하고 싶은 일은 .Net의 Access 모듈에서 서브 루틴을 호출하는 것뿐입니다..Net에서 액세스 모듈의 호출 루틴?

궁극적으로 VB에서 작동하도록해야하지만 동일한 결과를 얻으려고 노력하고 있습니다.

다음은 VB 테스트 양식의 코드입니다.

함께 System.Runtime.InteropServices.COMException (0x800A9D9F) : 그것은 오류가 발생 예외 HRESULT에서 : Microsoft.Office.Interop.Access.ApplicationClass.Run에서 0x800A9D9F (문자열 절차, ARG2을 &이며 Arg1 객체 & 개체, ..., Object & Arg30)

내 테스트 Sub는 "MyTest"이며 모듈은 "Module1"입니다. 테이블에 단일 레코드를 삽입하는 것뿐입니다. 그것은 Access 내에서 잘 실행됩니다. 나는 행운과 함께 "Module1.MyTest", "MyTest()", "MyTest 호출"등 다양한 순열을 시도했다.

Access (및 다른 Office 응용 프로그램) 자동화의 그물에서 다른 예제를 발견했지만 작동하지 않는 것 같습니다. 누군가가 나를 실용적인 예로 지적한다면 나는 감사 할 것입니다.

샘플 코드 다음의 InnerException (오류의 실제 이유를) 볼 수

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 [Access 2007에 대한 Microsoft의 지침] (http://office.microsoft.com/en-us/word-help/create-remove-or-change-a-trusted-location-for- your-files-HA010031999.aspx # BM11). –

0

보십시오.

또한 VB6을 알고 있다면 VB6에서 동일한 코드를 작성해보십시오. & 그것이 작동하는지 확인하십시오. 어떤 오류에 직면하지 않으면
, 그것은 VB.net에서

편집을 동일하게 작동해야합니다 MYTEST 공개 방법인가?

+0

InnerException이 null입니다. 나는 VB6을 가지고 있지 않지만 FoxPro에서 이것을 사용해 보았습니다. aa = CREATEOBJECT ("Access.Application") 실행하면 "OLE Error Code 0x800A9D9F : 알 수없는 COM 상태 코드"가 나타납니다. – Rob3C

0

액세스 프로 시저의 목적이 액세스 파일의 테이블을 조작하는 것이라면 .mdb 파일에 대한 ODBC 또는 OLEDB 연결을 연 다음 테이블을 열어서 작업을 직접 수행하십시오 레코드 세트를 조작하고이를 조작하거나 해당 SQL 명령어를 보내면됩니까?

적어도 Access의 새 인스턴스를 만드는 데 필요한 모든 시간을 절약 할 수 있습니다.

관련 문제