> Alexandr
Параметры в процедуры и функции можно передать напрямую.Для этого вместо метода RunMacro нужно использовать метод Eval.
К сожалению формат форума не позволяет прикрепить файлы, поэтому придется тебе их создать самому.
1.Данный код помещаешь в модуль EXcel:
Option Explicit
Public Sub RunAcadMacro()
Dim AcadApp As Object
Dim AcadDoc As Object
Dim dvb_path As String
'Путь к файлу *.dvb, который необходимо загрузить
dvb_path = Application.ActiveWorkbook.Path + "\MyProject.dvb"
'Процедуры и функции которые нужно запустить:
'ЗАПУСК ПРОЦЕДУРЫ БЕЗ ПАРАМЕТРА
Const macro_string_1 = "MyLib.AnyFuns.EmptySub"
'ЗАПУСК ФУНКЦИИ БЕЗ ПАРАМЕТРА
Const macro_string_2 = "MyLib.AnyFuns.EmptyFun"
'ЗАПУСК ПРОЦЕДУРЫ С 2-МЯ ПАРАМЕТРАМИ
Const macro_string_3 = "MyLib.AnyFuns.MySub 3,4"
'Const macro_string_3 = "Call MyLib.AnyFuns.MySub(3,4)"'Можно и так запустить
'ЗАПУСК ФУНКЦИИ С 2-МЯ ПАРАМЕТРАМИ
Const macro_string_4 = "Call MyLib.AnyFuns.MyFunction(3.256,4.123)"
On Error Resume Next
'Присоединяемся к AutoCAD
Set AcadApp = GetObject(, "AutoCAD.Application")
If AcadApp Is Nothing Then
Set AcadApp = CreateObject("AutoCAD.Application")
End If
AcadApp.Visible = True
'Загружаем *.dvb проект
AcadApp.LoadDVB dvb_path
'Запускаем требуемые функции
AcadApp.Eval (macro_string_1)
AcadApp.Eval (macro_string_2)
AcadApp.Eval (macro_string_3)
AcadApp.Eval (macro_string_4)
On Error GoTo 0
End Sub
2.В той же папке, сохраняешь VBA проект (AutoCAD):
Файл проекта: MyProject.dvb
Имя проекта: MyLib
Модуль: AnyFuns
В модуле пишешь:
Option Explicit
Public Function MyFunction(ByVal A As Double, ByVal B As Double)
Dim C As Double
C = (A * A + B * B) ^ (1 / 2)
MsgBox CStr( C ), vbInformation, "TestRunMacro"
End Function
Public Sub MySub(ByVal A As Double, ByVal B As Double)
Dim C As Double
C = (A * A * A + B * B * B) ^ (1 / 3)
MsgBox CStr( C ), vbInformation, "TestRunMacro"
End Sub
Public Sub EmptySub()
MsgBox "EmptySub", vbInformation, "TestRunMacro"
End Sub
Public Function EmptyFun()
MsgBox "EmptyFun", vbInformation, "TestRunMacro"
End Function
3.При запуске из Excel процедуры RunAcadMacro загрузится AutoCAD (если был не загружен),загрузится проект MyLib и последовательно появятся 4 окна с результатами работы процедур и функций.