yuganshu soni Ответов: 2

Как запустить макрос ms access из VB.NET


i m trying to run a macro from ms access 2010 from vb.net 2010 ..



this is giving me following error..

Unable to cast COM object of type 'Microsoft.Office.Interop.Access.ApplicationClass' to class type 'WindowsApplication1.Access.ApplicationClass'. Instances of types that represent COM components cannot be cast to types that do not represent COM components; however they can be cast to interfaces as long as the underlying COM component supports QueryInterface calls for the IID of the interface.

i don't know what to do plz help... its very urgent


Что я уже пробовал:

Тусклый oAccess как доступ.ApplicationClass

- Запустите доступ и откройте базу данных.
oAccess = CreateObject("доступ.Приложение")
oAccess.Видимое = Истинное
oAccess.OpenCurrentDatabase("C:\Users\Yuganshu\Desktop\New папка (4)\WindowsApplication1\db.mdb", False)

- Запустите макросы.
oAccess.Run("Macro1")
'oAccess.Run("DoKbTestWithParameter", "привет от клиента VB .NET")

"Очистка: выход из доступа без сохранения изменений в базе данных.
oAccess.DoCmd().Quit(Доступ.Оправдательный приговор.)
Система.Время Выполнения.InteropServices.Маршал.ReleaseComObject(oAccess)
oAccess = ничего

2 Ответов

Рейтинг:
2

F-ES Sitecore

Я предполагаю, что у вас также есть класс под названием Access.ApplicationClass в вашем решении, вероятно, потому, что вы создали папку Access и поместили в нее ApplicationClass, поэтому при определении

Dim oAccess As Access.ApplicationClass


это определение неправильного типа. Поскольку у вас есть класс ApplicationClass в вашем проекте и на него ссылаются вы должны четко указать какой из них вы имеете в виду

Dim oAccess As Microsoft.Office.Interop.Access.ApplicationClass


yuganshu soni

спасибо друг но теперь он дает ошибку:
Ссылка на класс 'ApplicationClass' не допускается, если его сборка связана с использованием режима No-PIA.

F-ES Sitecore

Google "не допускается, когда его сборка связана с использованием режима No-PIA" для предложений, по крайней мере, сделайте фундаментальное исследование, прежде чем задавать вопрос.

yuganshu soni

я уже это сделал, ничего подходящего не нашел!

Рейтинг:
2

rafborremans

Система Импорта.ComponentModel
Импортирует Microsoft.Офис.Взаимодействие.Доступ

Public Sub Run_Access_Procedure(ProcName As String)
Dim oAccess как новый Microsoft.Офис.Взаимодействие.Доступ.Приложение()
oAccess.Видна = Ложь
oAccess.OpenCurrentDatabase("C:\TEST\Test.accdb")
- Запустите процедуру.
oAccess.Run(ProcName)
oAccess.Метод docmd().Бросить()
Система.Время Выполнения.InteropServices.Маршал.ReleaseComObject(oAccess)
oAccess = ничего
Конец Подводной Лодки


CHill60

Дамп кода не дает хорошего ответа. Объясните, почему ваш работает, когда оперативники этого не сделали.