У меня проблемы с автоматизацией Access 2007 из .Net, VB или C #. Все, что я хочу сделать, это вызвать подпрограмму в модуле доступа из .Net.
В конечном счете, я должен заставить его работать в VB, но я пробовал оба с одинаковыми результатами.
Ниже приведен код в моей форме тестирования VB. Это приводит к ошибке:
System.Runtime.InteropServices.COMException (0x800A9D9F): Исключение из HRESULT: 0x800A9D9F в Microsoft.Office.Interop.Access.ApplicationClass.Run (Строковая процедура, Object & Arg1, Object & Arg2, ..., Object & Arg30) *
Мой тестовый Sub в Access называется «MyTest» и является модулем «Module1». Все, что он делает, это вставляет одну запись в таблицу. Он работает нормально изнутри Access. Я безуспешно пробовал различные варианты «Module1.MyTest», «MyTest ()», «Call 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