2016-04-30 2 views
5

Документ Viso по умолчанию имеет CodeName от ThisDocument и, в отличие от других документов Office, ThisDocument содержит CodeName, который доступен только для чтения.Будет ли переименование модуля «ThisDocument» Visio возникнет проблема?

Если я доверилась доступ к VBE, то я может переименовать компонент, с линией, как это:

ThisDocument.vbProject.vbComponents("ThisDocument").Name = "FooBar" 

И с этого момента, я могу сослаться на объект, как FooBar вместо от ThisDocument

Но, по-видимому, CodeName доступен только для чтения по какой-либо причине. Я не могу найти никаких проблем с переименованием объекта, пока, но я не уверен, что могут быть некоторые неожиданные последствия.

Безопасно ли переименовать компонент ThisDocument?

+0

Пожалуйста, дайте мне знать, если/когда вы получите ответ на этот вопрос, рефакторинг Rubberduck в/переименовывать в настоящее время установки 'Опору erties.Item ("_ CodeName"). Значение для модулей типа 'vbext_ct_Document', что означает, что я могу ожидать, что при переименовании модуля типа документа Visio будет вызываться' COMException', если он доступен только для чтения. Я подозреваю, что установка «Имя» напрямую может иметь те же последствия, что и при использовании «ThisWorkbook» в Excel, т. Е. Происходят странные вещи, например дублирующие модули в Project Explorer. Жаль, что у меня нет Visio, чтобы проверить его. –

+0

Первое, о чем я бы подумал - это события - возможно, до и после теста, чтобы убедиться, что они все еще подключены правильно. – Blackhawk

+0

@ Mat'sMug это (см. Мой ответ) также является проблемой в MS Word - наткнулся на это при использовании удивительности Rubberduck * (что, вероятно, не позволило мне переименовать ThisDocument в SomeThing) *. Большинство вещей, казалось, работало (в MS Word), за исключением макрокоманд – SlowLearner

ответ

2

Когда событие двойного щелчка фигуры связано с макросом (как описано here, чтобы создать Macrobutton), все происходит. Протестировано с Visio 2010 - 64-битная версия. .

Кроме того, после восстановив первоначальное название ThisDocument ...

  • FooBar.vbProject.vbComponents ("Foobar") Name = "ThisDocument"

... все снова работает:)

linking shapes to macro

+0

Это также проблема в MS Word, однако в MS Word другие события все еще работают. Код для MacroButtons просто не найден * (хотя может быть и так) *. – SlowLearner

+0

Я могу переименовать компонент документа Word, но ошибка «Sub или Function not defined» появляется до тех пор, пока ... это не так, но я не знаю, какие триггеры (и не могут достоверно воспроизвести шаги) поле для обновления , В любом случае макрос MacroButton не должен находиться в модуле документа, он должен быть в стандартном модуле. При таком подходе переименование модуля по-прежнему позволяет MacroButton найти процедуру. В то время как Visio разрешает DblClick формы обращаться к процедуре в модуле std, форма сохраняет ссылочную информацию, относящуюся к модулю, поэтому любое переименование должно было бы обновить форму. – ThunderFrame

+0

@ThunderFrame так ... ошибка исчезает ?! Это весело :-D WRT мое тестирование в MS Word, действительно, Macrobutton Code был в стандартном модуле. Я просто показал код MB в «ThisDocument» для visio, потому что это было меньше работы ;-) – SlowLearner

Смежные вопросы