VBA Word - заполнение нескольких форм с помощью всплывающего окна - PullRequest
0 голосов
/ 12 апреля 2020

Моя задача: у меня есть несколько форм в одном документе Word, и он должен заполняться одной и той же информацией, такой как название компании, адрес, налоговый номер и т. Д. c.

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

Private Sub OKbutton_Click()
Dim FirmaName As Range
Set FirmaName = ActiveDocument.Bookmarks("FirmaName").Range
FirmaName.Text = Me.TextBox1.Value
Dim FirmaNameRio As Range
Set FirmaNameRio = ActiveDocument.Bookmarks("FirmaNameRio").Range
FirmaNameRio.Text = Me.TextBox1.Value
Me.Repaint
stinfo.Hide

Проблема или проблема для меня в том, что я хочу иметь возможность «динамически» изменять данные во всплывающей форме. Теперь он работает так, как каждый раз, когда я нажимаю кнопку OK, он добавляет новые данные позади предыдущего, что нежелательно. Если я ошибаюсь, я хочу изменить его только во всплывающем окне, а не в документе.

Так есть ли способ запрограммировать его, чтобы информация, введенная во всплывающем окне, могла переписать предыдущая информация?

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

1 Ответ

0 голосов
/ 12 апреля 2020

Используйте код вроде:

Sub UpdateBookmark(StrBkMk As String, StrTxt As String)
Dim BkMkRng As Range
With ActiveDocument
  If .Bookmarks.Exists(StrBkMk) Then
    Set BkMkRng = .Bookmarks(StrBkMk).Range
    BkMkRng.Text = StrTxt
    .Bookmarks.Add StrBkMk, BkMkRng
  End If
End With
Set BkMkRng = Nothing
End Sub

, который вы бы назвали с помощью кода:

Call UpdateBookmark "FirmaName" Me.TextBox1.Value

И, поскольку вы используете закладки, вместо того, чтобы записывать одно и то же значение несколько раз для разных закладок просто вставьте перекрестную ссылку на первую закладку, значение которой нужно повторить, и, когда вы обновили все закладки, используйте одну строку кода для обновления всех перекрестных ссылок:

ActiveDocument.Fields.Update
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...