Пользовательская форма для Word с закладками и автоматическими перекрестными ссылками - PullRequest
0 голосов
/ 01 марта 2019

так что это мой первый опыт программирования, и я очень рад этому.Однако я столкнулся с проблемой:

Цель

Моя цель - создать текстовый документ со встроенной пользовательской формой, запрашивающей имя, заголовок и начальную дату в начале.Затем информация должна быть отражена в определенных областях документа.

Dim Name As Range
Set Name = ActiveDocument.Bookmarks("Name").Range
Name.Text = Me.TextBox1.Value
Dim Title As Range
Set Title = ActiveDocument.Bookmarks("Title").Range
Title.Text = Me.TextBox2.Value
Dim Startdate As Range
Set Startdate = ActiveDocument.Bookmarks("Startdate").Range
Startdate.Text = Me.TextBox3.Value
Me.Repaint
UserForm1.Hide

Я мог бы успешно интегрировать пользовательскую форму, назначив информацию закладкам.Поскольку я могу использовать только одну закладку, я попытал счастья со свойствами текста, но это не работает.

Следующее, что я попробовал, было применить 1 закладку и несколько перекрестных ссылок по всему тексту, что означает, что мне нужно добавить команду в код, которая автоматически обновляет все перекрестные ссылки, я попробовал ее с помощью sub updateAllFields ()

Dim Name As Range
    Set Name = ActiveDocument.Bookmarks("Name").Range
    Name.Text = Me.TextBox1.Value
    Dim Title As Range
    Set Title = ActiveDocument.Bookmarks("Title").Range
    Title.Text = Me.TextBox2.Value
    Dim Startdate As Range
    Set Startdate = ActiveDocument.Bookmarks("Startdate").Range
    Startdate.Text = Me.TextBox3.Value
    Me.Repaint
    Sub UpdateAllFields()
    UserForm1.Hide

Но этот выдает мне сообщение об ошибке.Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 01 марта 2019

Придерживайтесь пути к полям, так как для его обслуживания может потребоваться меньше усилий.


I: Создать три пользовательских свойства документа для каждого поля (Имя, Название, Начальная дата)

Шаги:
1) Нажмите Файл |Свойства |Расширенные свойства |Пользовательский
2) Введите следующие данные:
- Имя: customName
- Текст: Введите имя
3) Нажмите кнопку «Добавить»
4) Повторите шаги 2 и 3 для полей Названиеи StartDate (не забудьте добавить «пользовательское» слово раньше, чтобы вы могли позже легко его идентифицировать

Вот как это должно выглядеть:
enter image description here


II: Добавить поля каждого пользовательского свойства, созданного в текстовом документе

Шаги:
1) Поместить курсор в нужное поле в текстовом документе
2.) Нажмите Вставить |Быстрые запчасти |Поле |Категории: Информация о документе |DocProperty |<имя свойства документа>
3) Нажмите Ok
4) Повторите процесс для каждого поля

enter image description here

Примечание: Вы можете добавить одно и то же поле / настраиваемое свойство в разные части документа

enter image description here


III: Создать пользовательскую форму и добавить элементы управления

Шаги:
1) Добавить пользовательскую форму
2) Добавить три текстовых поля и установить для свойства name значение:
- txtName
- txtTitle
- txtStartDate
длякаждый.
3) Добавьте командную кнопку и установите для ее имени cmdInsertData

Вот как это должно выглядеть:

enter image description here

Для задания имени каждого элемента управления ищите (Имя) в окне свойств:

enter image description here


IV: Добавить код для отображения пользовательской формы при запуске

Шаги:
1) Запустите VBE, нажав Alt + F11 (или активировав вкладку разработчика на ленте и нажав кнопку Visual Basic
2) Рекламаd следующий код для объекта «ThisDocument»:

Private Sub Document_Open()

    UserForm1.Show

End Sub

V: добавьте код формы

Шаги:
1) Щелкните правой кнопкой мыши объект UserForm1и выберите «Просмотреть код» 2) Добавьте следующий код:

Private Sub cmdInsertData_Click()

    ' Update the properties values
    ThisDocument.CustomDocumentProperties("customName").Value = Me.txtName.Value
    ThisDocument.CustomDocumentProperties("customTitle").Value = Me.txtTitle.Value
    ThisDocument.CustomDocumentProperties("customStartDate").Value = Me.txtStartDate.Value

    ' Show changes of document properties in document
    ThisDocument.Fields.Update

    ' Hide the userform
    UserForm1.Hide

End Sub

Не забудьте сохранить документ как включенный макросом

Закройте и снова откройте его

Попробуйте и дайте мне знать

Отказ от ответственности: Поскольку эта статья гласит , существует правильный способ обработки отображения пользовательской формы должным образом, ноЯ оставлю это "легким" способом для простоты.

...