как запустить макрос
masja / 24.02.2011, 11:28/00:41
Форум:
как правильно чайнику запустить макрос корела находящийся в файле хх.cdr находящийся в VBAProject(хх) в папке "modules" в модуле "модуль1" - sub МакросДляЗапуска ()
запускать этот макрос надо например из другого макроса другого VBAProject(хх22) или из екселя
и желательно не выдергивать макрос из этого файла в гмс, а просто запустить /макрос и картинки в одном файле должны быть всегда/
выбираете Tools-Visual Basic-Play... (или Инстурменты-Макросы-Запустить макрос), далее выбираете имя файла и в списке ниже запускаете нужный вам макрос
Из справки:
GMSManager.RunMacro
Function RunMacro(ModuleName As String, MacroName As String, Parameter() As Variant) As Variant
Пример:
GMSManager.RunMacro "GlobalMacros", "MyModule.MyTestSub"
GMSManager.RunMacro "GlobalMacros", "MyModule.MyTestSub"
- эта конструкция почемуто точно не работает (из ексела). пишет модуль не найден.
эта конструкция для файлов хх.cdr должна работать? в принципе...
что может мешать? для не гмс-файлов
Инстурменты-Макросы-Запустить макрос
надо же програмно бы... не через инструмент
masja, должно работать. Видимо что-то неправильно делаешь.
видимо да
но вот, что? можно текст екселя?:
Dim cDraw As Object 'CorelDRAW.Application
Dim curDoc As Object
Set cDraw = CreateObject("CorelDRAW.Application.12")
cDraw.Visible = True
Set curDoc = cDraw.OpenDocument("D:\с12.cdr")
curDoc.ActivePage.Layers("График").Editable = True
...
curDoc.ActivePage.Layers("Распределение").Editable = True
ss = cDraw.InitializeVBA
'Set gms = cDraw.GMSManager
'dd = cDraw.GMSManager.UserGMSPath
cDraw.GMSManager.RunMacro "с12", "Module1.ПокраситьКартуСерым" 'че не так ей
???
curDoc.SaveAs "D:\11111.cdr", SaveOptions
curDoc.Close 'здесь этот макрос работает
cDraw.Quit
masja,
1. используй тег code на форуме (сообщение отредактировал)
2. Не используй русских названий в именах функций и модулей )))
И... П.С. Посмотрел, походу GMSManager не видит макросы внутри файлов cdr.
по ходу да...
что будет(может) видеть этот макрос внутри файлов cdr?
что-то типа
ThisDocument.ПокраситьКрасноКоричневым
запущееное в кореле очень даже работает /если в general от ThisDocument вставить Sub ПокраситьКрасноКоричневым() /, и даже само после точки выбирается
а вот в экселе эта конструкция же уже не работает /похоже ThisDocument для экселя не совсем виден?/... почему так может быть?
оно конечно ThisDocument надо может как-то не так оформить?
но вот ThisDocument.name и Documents(1).name вроде одно итоже выдает. а макрос ни тот ни другой не видит...
как оно правильно должно быть написано, чтоб заработало?
А что за версия то корела, кстати говоря? )
Вообще ThisDocument, насколько я помню, это внутреннее псевдо-имя старых версий Корела. Сейчас же он использует ThisMacroStorage. Логично что к этому имени со вне обращаться нельзя. А вот если это имя изменить ручками, то возможно прокатит.
А зачем нужно использовать хранение макроса в документе? Почему нельзя решить вопрос, создав GMS файл, в котором будет всё что нужно?
корел=12 /лицензирование - есть тормоз прогрэсса (с)/
офис=2003 /есть еще 2007- тоже на цепочке лицензионной/
макрос только для картинки причем только для этой, причем только для 12 корела
макрос только эту картинку трансформирует собственно
кудато гмс таскать-вставлять - тетки не будут. максимум 2 файлика осилят: один рисует(корел), в другом данные и кнопки (эксель) /при условии кшно, что не перепутают тетки кого первого открывать/ эту связку файлов надо на разные машины таскать
да и по жизни ж надо знать как это чудо запускать в принципе
можно подробнее: что и как ручками надо сделать?
- нету такого... вроде
Добавлено (25.02.2011, 12:52)
---------------------------------------------
есть какое нибудь чтиво приличное об этих модульных макросах и зисдокументах? на руском бы еще желательно /чета по аглицки не доходит видать/
В посте №9 всё написано.
Сомнительная надобность. Напиши всё в одном месте, например в макросе (в экселе). Не вижу смысла, в данном случае, разбрасывать код по приложениям.
Set curDoc = cDraw.OpenDocument("D:\с12.cdr")
curDoc.ActivePage.Layers("График").Editable = True
И продолжай здесь же код свой...
....
...в конце curDoc.Save
curDoc.Close
Страницы