как запустить макрос

как правильно чайнику запустить макрос корела находящийся в файле хх.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.

GMSManager не видит макросы внутри файлов cdr

по ходу да...
что будет(может) видеть этот макрос внутри файлов cdr?

что-то типа
ThisDocument.ПокраситьКрасноКоричневым
запущееное в кореле очень даже работает /если в general от ThisDocument вставить Sub ПокраситьКрасноКоричневым() /, и даже само после точки выбирается
а вот в экселе эта конструкция же уже не работает /похоже ThisDocument для экселя не совсем виден?/... почему так может быть?

оно конечно ThisDocument надо может как-то не так оформить?
но вот ThisDocument.name и Documents(1).name вроде одно итоже выдает. а макрос ни тот ни другой не видит...

как оно правильно должно быть написано, чтоб заработало?

А что за версия то корела, кстати говоря? )
Вообще ThisDocument, насколько я помню, это внутреннее псевдо-имя старых версий Корела. Сейчас же он использует ThisMacroStorage. Логично что к этому имени со вне обращаться нельзя. А вот если это имя изменить ручками, то возможно прокатит.

А зачем нужно использовать хранение макроса в документе? Почему нельзя решить вопрос, создав GMS файл, в котором будет всё что нужно?

корел=12 /лицензирование - есть тормоз прогрэсса (с)/
офис=2003 /есть еще 2007- тоже на цепочке лицензионной/

хранение макроса в документе? Почему нельзя решить вопрос, создав GMS файл

макрос только для картинки причем только для этой, причем только для 12 корела
макрос только эту картинку трансформирует собственно

кудато гмс таскать-вставлять - тетки не будут. максимум 2 файлика осилят: один рисует(корел), в другом данные и кнопки (эксель) /при условии кшно, что не перепутают тетки кого первого открывать/ эту связку файлов надо на разные машины таскать

да и по жизни ж надо знать как это чудо запускать в принципе

если это имя изменить ручками, то возможно прокатит

можно подробнее: что и как ручками надо сделать?

ThisMacroStorage

- нету такого... вроде

Добавлено (25.02.2011, 12:52)
---------------------------------------------
есть какое нибудь чтиво приличное об этих модульных макросах и зисдокументах? на руском бы еще желательно /чета по аглицки не доходит видать/

можно подробнее

В посте №9 всё написано.

как это чудо запускать в принципе

Сомнительная надобность. Напиши всё в одном месте, например в макросе (в экселе). Не вижу смысла, в данном случае, разбрасывать код по приложениям.

Set curDoc = cDraw.OpenDocument("D:\с12.cdr")  
curDoc.ActivePage.Layers("График").Editable = True
И продолжай здесь же код свой...
....
...в конце curDoc.Save
curDoc.Close

Страницы