Кросс опубликован на access-programmers.co.uk
Пожалуйста, размещайте ответы на этом форуме можно ..
Я собрал dll в c # 3.5 .., где я установил свойства решения, чтобы зарегистрировать сборку для взаимодействия COM.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace SBG_TestWithVBA
{
[ClassInterface(ClassInterfaceType.AutoDual)]
public class TestHello
{
[ComVisible(true)]
public string SayHello(string name)
{
string message = "Hello " + name;
return message;
}
public string HelloWorld()
{
string message = "Hello World!";
return message;
}
}
}
Затем я зарегистрировал сборку и файл tlb, используя
"C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe" "\ sbgfs01 \ users \ Vincent Pirolli \ Мои документы \ Visual Studio 2008 \ Проекты \ TestWithVBA \ TestWithVBA \ bin \ Release \ SBG_TestWithVBA .dll "/ tlb:" \ sbgfs01 \ users \ Винсент Пиролли \ Мои документы \ Visual Studio 2008 \ Проекты \ TestWithVBA \ TestWithVBA \ bin \ Release \ SBG_TestWithVBA.tlb "
Затем я добавляю файл tlb в vba из меню инструментов> ссылок ..
и мой код VBA выглядит следующим образом:
Sub test()
Dim f As SBG_TestWithVBA
Set f = New SBG_TestWithVBA
f.HelloWorld
End Sub
Я получаю следующую ошибку, хотя Intellisense работает в редакторе VBA:
"Ошибка автоматизации
Система не может найти указанный файл. "
У кого-нибудь есть идеи? У меня есть статьи в предыдущих постах, но я не могу найти решение.
хорошо, это действительно раздражает меня сейчас ..
мне удалось заставить это работать .. но я не понимаю, почему ..
В свойствах решения в пределах Visual Studio .. на вкладке «Сборка» я устанавливаю «Регистрация для взаимодействия COM» в значение «истина», а в «Приложении> Информация о сборке» я устанавливаю «Сделать сборку видимой» = ИСТИНА.
У меня есть файлы проекта VS на общем диске. Теперь, если я устанавливаю расположение сборки в папку bin на общем диске, в файлах моего проекта, когда я звоню из VBA, это не работает. Однако, если я устанавливаю папку сборки в папку на моем локальном диске C, то он отлично работает при звонке с VBA ..
Есть идеи?