2015-07-02 4 views
1

Я хочу установить имя текстового поля, чтобы его можно было легко получить с помощью кода. e.gКак установить имя текстового поля в издателе?

Ищу поле редактирования аналогично this

Благодарности

+0

'1.' Как вы« добавляете »или« определяете »текстовое поле? Как форма, а затем 'addTextBox' или каким-либо другим способом? '2.' Какую версию Office вы используете? например 2010, 2013, 2003 ... '3'. Где ваш текущий код VBA? – bonCodigo

+0

** 1. ** Я использую ленту. ** 2. ** MS 2010 ** 3. ** Его в файле –

+0

Я не понимаю ваш вопрос, позвольте мне попытаться снова объяснить мой вопрос. Есть ли способ установить имя [текстовое поле] (http://my.jetscreenshot.com/24060/20150702-agw1-89kb.jpg) в издателе аналогично тому, как мы можем установить имя диапазона в excel, просто набрав [здесь] (http://my.jetscreenshot.com/24060/20150702-empe-124kb.jpg) –

ответ

0

Там в окне свойств, которые могут быть доступны для каждого из элементов управления пользовательского интерфейса. Там вы можете переименовать элементы управления. (Так как у вас пока нет кода VBA, и вы хотите переименовать элемент управления из UI)

Другой вариант. Запишите макрос, внесите некоторые изменения в текстовое поле (например, измените размер, измените текст и т. Д.). Затем проверьте назначенное по умолчанию имя текстового поля в редакторе VBA. Как вы сказали, вы можете получить доступ к элементу управления через это имя по умолчанию и использовать код VBA (как вы сказали), переименовать текстовое поле.

+0

Вот в чем проблема: я не могу найти это окно свойств –

+0

Проблема заключается в том, что нет прямого доступа к свойствам в MS Publisher, как это делается в Excel, Access.Нет макрорекордера. Таким образом, вы можете попробовать использовать MS Word Macro recorder и посмотреть, как это происходит. – bonCodigo

+0

Я использовал непосредственное окно '? thisdocument.Selection.ShapeRange (1) .Name', но теперь я застрял с объектом рабочего листа в издателе. Как я могу редактировать его через VBA. –

0

Если вы действительно хотите редактировать объект листа в Publisher, вам нужно будет получить OLEobject формы и интерпретировать его как Excel.Application.

Если вы просто ищете решение для замещающих для документов издателя, вы можете просто создать текстовое поле, содержащее определенную строку, затем прокрутить все страницы, все фигуры на каждой странице, где HasTextFrame = msoTrue, и сравнить shape.TextFrame .TextRange.Text к вашей строке-заполнителю. Если это тот, который вам нужен, вы можете делать все, что хотите, с соответствующей формой.

Извините за неопределенный ответ, но ваши изображения больше не работают.

Редактировать: вы можете работать с Shape.Name для сравнения (вы упомянули это свойство в комментарии), но я понятия не имею, как вы установили значение из интерфейса, не используя VBA, в первую очередь , поэтому, если вы создаете шаблоны, описанный выше подход может быть проще для пользователей (см. https://msdn.microsoft.com/EN-US/library/office/ff939233.aspx для Shape.Name). Существует также свойство .Name для объектов страницы (https://msdn.microsoft.com/EN-US/library/office/ff940382.aspx), поэтому вы должны иметь возможность делать что-то вроде ActiveDocument.Pages («page_name»). Shapes («shape_name»). TextRange.Text = «ваш контент» после того, ве выяснили, как на самом деле установить имя значения

Edit 2: вы также можете попробовать использовать поиск и замену в соответствии Replacing Text in Microsoft Publisher Using Powershell, если вам не нужно делать ничего, выдвинутую за размещение какой-нибудь текст

Редактировать 3 : Учитывая название вашего вопроса, если вы не можете понять что-то с интерфейсом Publisher, вы можете установить свойство .Name выбранного текстового поля (или другой формы) с помощью dim shape = Selection.ShapeRange.TextFrame.Parent и shape.Name = "your_name". Вы можете установить имя выбранной страницы с помощью ActiveDocument.ActiveView.ActivePage.Name = "your_name". (Создайте макрос VBA, который предложит вам имена, и вы должны быть хорошими)