Добрый день, в автокаде созданы процедуры на VBA, требуется запускать их из экселя с передачей переменной, например передать лист как объект worksheet запустить команду нет проблем newDwg.SendCommand "MARKTOXLX" & vbCr но если процедуре назначить обязательный аргумент, например Sub MARKTOXLX (excelSheet as Object) то передать его из экселя как будто и нельзя. Может кто-нибудь сталкивался с такой проблемой?
Добрый день, в автокаде созданы процедуры на VBA, требуется запускать их из экселя с передачей переменной, например передать лист как объект worksheet запустить команду нет проблем newDwg.SendCommand "MARKTOXLX" & vbCr но если процедуре назначить обязательный аргумент, например Sub MARKTOXLX (excelSheet as Object) то передать его из экселя как будто и нельзя. Может кто-нибудь сталкивался с такой проблемой?topgun88
Так работать не будет. Такая команда должна быть newDwg.SendCommand "_-vbarun" & vbCr & "MARKTOXLX" & vbCr Запуск VBA макросов с параметрами VBASTMT Call MARKTOXLX("AA") . Но объекты передать не сможете
Так работать не будет. Такая команда должна быть newDwg.SendCommand "_-vbarun" & vbCr & "MARKTOXLX" & vbCr Запуск VBA макросов с параметрами VBASTMT Call MARKTOXLX("AA") . Но объекты передать не сможетеdoober
про передачу через реестр к сожалению ничего не знаю, Вас не затруднит написать пример как в Экселе вызвать процедуру sub_ в AutoCad, что бы в ней получить переменную str_ ?
про передачу через реестр к сожалению ничего не знаю, Вас не затруднит написать пример как в Экселе вызвать процедуру sub_ в AutoCad, что бы в ней получить переменную str_ ?topgun88
Сообщение отредактировал topgun88 - Вторник, 29.12.2020, 18:57
Public Const APPNAME As String = "Macro" Public Const DEVNAME As String = "MY_APP_AU" Sub Test() Dim s As String s = "C:\1.xls" s1 = "Лист2" SaveSetting DEVNAME, APPNAME, "путь", s SaveSetting DEVNAME, APPNAME, "Лист", s1 newDwg.SendCommand "_-vbarun" & vbCr & "MARKTOXLX" & vbCr End Sub
[/vba]
Модуль в AutoCad
[vba]
Код
Public Const APPNAME As String = "Macro" Public Const DEVNAME As String = "MY_APP_AU" Sub MARKTOXLX() путь = GetSetting(DEVNAME, APPNAME, "путь", "") Лист = GetSetting(DEVNAME, APPNAME, "Лист", "") End Sub
[/vba]
Модуль в Экселе
[vba]
Код
Public Const APPNAME As String = "Macro" Public Const DEVNAME As String = "MY_APP_AU" Sub Test() Dim s As String s = "C:\1.xls" s1 = "Лист2" SaveSetting DEVNAME, APPNAME, "путь", s SaveSetting DEVNAME, APPNAME, "Лист", s1 newDwg.SendCommand "_-vbarun" & vbCr & "MARKTOXLX" & vbCr End Sub
[/vba]
Модуль в AutoCad
[vba]
Код
Public Const APPNAME As String = "Macro" Public Const DEVNAME As String = "MY_APP_AU" Sub MARKTOXLX() путь = GetSetting(DEVNAME, APPNAME, "путь", "") Лист = GetSetting(DEVNAME, APPNAME, "Лист", "") End Sub