VBA <-> VB.NET

Автор Тема: VBA <-> VB.NET  (Прочитано 10554 раз)

0 Пользователей и 4 Гостей просматривают эту тему.

Оффлайн AgensАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
VBA <-> VB.NET
« : 25-04-2014, 11:05:16 »
Можно ли каким-нибудь способом осуществить связь этих двух приложение в AutoCAD?
(использовать открытые функции, методы, подключать модули)
Спасибо...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: VBA <-> VB.NET
« Ответ #1 : 25-04-2014, 18:55:09 »
Теоретически думаю что можно, а вот практически очень сложно. Подумай над другими вариантами. Думаю, что оптимальным будет переписать весь код VBA на VB.NET
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн AgensАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: VBA <-> VB.NET
« Ответ #2 : 16-05-2014, 10:26:36 »
Как-то очень уж долго VBA умирает...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Windcastle

  • ADN OPEN
  • **
  • Сообщений: 58
  • Карма: 0
Re: VBA <-> VB.NET
« Ответ #3 : 28-08-2015, 19:18:21 »
Пока не изучу C# не хотел бы, чтобы он сдох! AutoCAD 2016 его поддерживает. Значит можно спать спокойно еще пару лет... и изучать C#.

Оффлайн AgensАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: VBA <-> VB.NET
« Ответ #4 : 30-08-2015, 15:43:05 »
Windcastle, как-то долго Вы собираетесь его изучать :)
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: VBA <-> VB.NET
« Ответ #5 : 30-08-2015, 23:08:49 »
Пофлудить, что ли )))
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Пашин Евгений

  • ADN PRO
  • *
  • Сообщений: 662
  • Карма: 12
  • Skype: pashin.evgeniy
Re: VBA <-> VB.NET
« Ответ #6 : 31-08-2015, 06:46:47 »
Windcastle, как-то долго Вы собираетесь его изучать :)

Как можно быстрее! Планирую в 2016 году стать уверенным (если не профессиональным) пользователем.

Оффлайн AgensАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: VBA <-> VB.NET
« Ответ #7 : 31-08-2015, 10:48:08 »
Алексей Кулик, в темах о VBA и такие сообщения - информация, т.е. темы "мертвые"...
Пашин Евгений, но все же пользователем...
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: VBA <-> VB.NET
« Ответ #8 : 31-08-2015, 11:11:32 »
Off-Topic: показать
Да вопрос не в том, мертвые темы или нет. Вопрос в другом :)
Сугубо ИМХО: пока не будет хоть какой-то внятной задачи, "всухую" изучать язык - интересно, но не результативно. Сейчас Андрей Бушман и Александр Ривилис за эти слова мне навешают ;)
Есть код на VBA? Отлично! В онлайн-справке часто есть примеры, как один и тот же код выглядит на VBA, VB.NET и C#. Осуществить "перевод" даже вручную не так уж и сложно. Если грубо, то: надо добавить новый слой (для упрощения задачи снимаем вопрос проверки - а вдруг слой уже есть)? Ок, на VBA это нечто типа ThisDrawing.Layers.Add, на .NET придется открыть сначала текущий документ, потом таблицу слоев в режиме "чтение и запись", потом добавить новый элемент, настроить его и добавить этот элемент в таблицу слоев. Ну и зафиксировать изменения.
Да, VBA проще и код писать там быстрее, но некоторые вещи там не сделать в принципе (точно так же, как и в lisp'e).
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн AgensАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 223
  • Карма: 0
Re: VBA <-> VB.NET
« Ответ #9 : 31-08-2015, 13:08:16 »
Алексей Кулик, поэтому я и создал тему, для меня проще написать интерфейс на C#, а обработку объектов AutoCAD на VBA. Но никто так и не ответил, как подключить VBA к С# или VB и пользоваться открытыми функциями из C#, написанными на VBA.
VS2019, VBA 7.1, VB.NET, C#, ACAD2019, Revit 2020

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: VBA <-> VB.NET
« Ответ #10 : 31-08-2015, 13:31:09 »
Но никто так и не ответил, как подключить VBA к С# или VB и пользоваться открытыми функциями из C#, написанными на VBA.
Просто такой возможности нет. Ну нельзя вызвать код VBA из C#. Точнее нельзя получить результат вызова этого кода. А вызвать код можно:
Код - C# [Выбрать]
  1. Application.AcadApplication.RunMacro("макро_код");
Цитировать
Runs a VBA macro from the Application object.

See Also | Example

Signature

object.RunMacro MacroPath

Object

Application
The object this method applies to.

MacroPath

String; input-only
A string representing the calling sequence of the macro to run. The calling sequence must have the following syntax, where [] represent optional parameters:

[Filename.dvb.][ProjectName.][ModuleName.]MacroName

NOTE: If Filename.dvb is followed by ProjectName, separate the names with an exclamation point instead of a period, as in the following example:

Filename.dvb!ProjectName


The Filename.dvb specified will be loaded if it is not already loaded. If the path to the Filename.dvb is not specified, the AutoCAD search path is searched to locate the file. If ProjectName is not specified, all currently loaded projects are searched to locate the macro.


Не знаю насколько это тебе поможет.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1115
  • Карма: 173
Re: VBA <-> VB.NET
« Ответ #11 : 31-08-2015, 13:41:09 »
Если я правильно понимаю, такой вариант сработает только при использовании Interop. Или я ошибаюсь?
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: VBA <-> VB.NET
« Ответ #12 : 31-08-2015, 13:41:18 »
Кстати, очень интересная табличка: Сравнение VBA/VB с VB.NET и C# (.NET)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: VBA <-> VB.NET
« Ответ #13 : 31-08-2015, 13:42:16 »
Или я ошибаюсь?
Можно и через Reflection и тогда Interop подключать не нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение