Vba for word forms

Содержание

  • 1 Adding Controls to a UserForm at Design Time
  • 2 Cancels a cancelable event (an event that has a Cancel parameter).
  • 3 Change caption
  • 4 Close a form
  • 5 Creating UserForms Programmatically
  • 6 Display form in Modal mode
  • 7 Format fonts
  • 8 Form count
  • 9 Loading a Form into Memory Prior to Displaying It
  • 10 Open a form, format the fonts and close it
  • 11 Output form to html file
  • 12 To remove the Userform from the computer»s memory, you must use the Unload statement; otherwise, the Userform is only hidden.
  • 13 Using the Show Method to Display a Form

Adding Controls to a UserForm at Design Time

   <source lang="vb">

Sub RunTimeButton()

   Dim Butn As CommandButton
   Set Butn = UserForm1.Controls.Add("Forms.rumandButton.1")
   With Butn
       .Caption = "Added at runtime"
       .Width = 100
       .Top = 10
   End With
   UserForm1.Show

End Sub

</source>
   
  

Cancels a cancelable event (an event that has a Cancel parameter).

   <source lang="vb">

Private Sub Form_BeforeUpdate(Cancel As Integer)

  If MsgBox("Are you sure you want to save changes to this record?", _
             vbYesNo Or vbInformation, "Confirm Upate") = vbNo Then
     DoCmd.CancelEvent
  End If

End Sub

</source>
   
  

Change caption

   <source lang="vb">

Sub ChangeCaption(frmAny As Form)

  If IsNull(frmAny.Caption) Then
     frmAny.Caption = "Form For - " & CurrentUser
  Else
     frmAny.Caption = frmAny.Caption & " - " & CurrentUser
  End If

End Sub

</source>
   
  

Close a form

   <source lang="vb">

Private Sub cmdClose_Click()

  DoCmd.Close acForm, Me.Name
   

End Sub

</source>
   
  

Creating UserForms Programmatically

   <source lang="vb">

Sub MakeForm()

   Dim TempForm As Object
   Dim NewButton As Msforms.rumandButton
   Dim Line As Integer
   Application.VBE.MainWindow.Visible = False
   Set TempForm = ThisWorkbook.VBProject. _
     VBComponents.Add(3) "vbext_ct_MSForm
   With TempForm
       .Properties("Caption") = "Form"
       .Properties("Width") = 200
       .Properties("Height") = 100
   End With
   Set NewButton = TempForm.Designer.Controls _
     .Add("forms.rumandButton.1")
   With NewButton
       .Caption = "Click Me"
       .Left = 60
       .Top = 40
   End With
   With TempForm.CodeModule
       Line = .CountOfLines
       .InsertLines Line + 1, "Sub CommandButton1_Click()"
       .InsertLines Line + 2, "  MsgBox ""Hello!"""
       .InsertLines Line + 3, "  Unload Me"
       .InsertLines Line + 4, "End Sub"
   End With
   VBA.UserForms.Add(TempForm.name).Show
   ThisWorkbook.VBProject.VBComponents.Remove TempForm

End Sub

</source>
   
  

Display form in Modal mode

   <source lang="vb">

Sub cmdGetUserForm_Click()

   frmStats.Show vbModal

End Sub

</source>
   
  

Format fonts

   <source lang="vb">

Sub PermanentFormFonts (strFont As String)

   On Error GoTo PermanentFormFonts_Err
   Dim objAO        As AccessObject 
   Dim objCP        As Object       
   Dim ctlControl    As Control     
   Set objCP = Application.CurrentProject
   For Each objAO In objCP.AllForms
       DoCmd.OpenForm objAO.Name, acDesign, , , , acHidden
       For Each ctlControl In objAO.Controls
           ctlControl.FontName = strFont
       Next
       DoCmd.Close acForm, objAO.Name, acSaveYes
   Next

PermanentFormFonts_Exit:

   Exit Sub

PermanentFormFonts_Err:

   If Err.Number = 438 Then
       Resume Next
   Else
       MsgBox Err.Description
       Resume PermanentFormFonts_Exit
   End If

End Sub

</source>
   
  

Form count

   <source lang="vb">

Sub exaFormsContainer()

   Dim db As Database
   Dim frm As Form
   Dim doc As Document
   
   Set db = CurrentDb
   
   Debug.Print "Opened form count: " & Forms.Count
   For Each frm In Forms
       Debug.Print frm.Name
   Next
   Debug.Print "Saved form count: " & db.Containers!Forms.Documents.Count
   For Each doc In db.Containers!Forms.Documents
       Debug.Print doc.Name
   Next

End Sub

</source>
   
  

Loading a Form into Memory Prior to Displaying It

   <source lang="vb">

Sub ModifySimpleForm()

   Dim sNewCaption As String 
   Load frmSimpleForm 
   sNewCaption = InputBox("Enter a caption for the form.") 
   frmSimpleForm.Caption = sNewCaption 
   frmSimpleForm.Show 
   MsgBox "OK - same form again except with default caption", vbOKOnly 
   frmSimpleForm.Show 

End Sub

</source>
   
  

Open a form, format the fonts and close it

   <source lang="vb">

Sub PermanentFormFonts (strFont As String)

   Dim objAO        As AccessObject  
   Dim objCP        As Object        
   Dim ctlControl    As Control      
   Set objCP = Application.CurrentProject
   For Each objAO In objCP.AllForms
       DoCmd.OpenForm objAO.Name, acDesign, , , , acHidden
       For Each ctlControl In objAO.Controls
           ctlControl.FontName = strFont
       Next
       DoCmd.Close acForm, objAO.Name
   Next

End Sub

</source>
   
  

Output form to html file

   <source lang="vb">

Sub OutputToDAP()

   DoCmd.OutputTo acOutputForm, "frmComplaints", acFormatDAP, "c:P.html"

End Sub

</source>
   
  

To remove the Userform from the computer»s memory, you must use the Unload statement; otherwise, the Userform is only hidden.

   <source lang="vb">

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)

   Unload Me     "Removes Userform named frmStats from memory.

End Sub

</source>
   
  

Using the Show Method to Display a Form

   <source lang="vb">

Sub SimpleFormExample()

   ShowSimpleForm True 
   MsgBox "OK - Same form now, but modeless.", vbOKOnly 
   ShowSimpleForm False 
   MsgBox "Exiting the SimpleFormExample procedure.", vbOKOnly 

End Sub
Private Sub ShowSimpleForm(bModal As Boolean)

   If bModal Then 
       frmSimpleForm.Show vbModal 
   Else 
       frmSimpleForm.Show vbModeless 
   End If 

End Sub

</source>

Практическая работа2 Тема: Разработка программ с использованием математических процедур и функций (линейные программы)

Цель: приобрести навыки программирования с использованием встроенных функций ввода/вывода языка Visual Basic for Application. Осуществить вывод полученных результатов, используя элемент управления текстовое поле (TextBox)

Задание. Найти значение функции: y=sin5x+cos3x при любом заданном х.

Содержание занятия:

  • Откройте приложение MS Word.

  • Выполните команду Разработчик — Visual Basic или нажмите Alt+F11.

  • Добавьте форму (команда Insert UserForm)

  • Для изменения размеров формы используйте указатель мыши помещённый в правый нижний угол окна Формы(UserForm)

  • Разработайте пользовательский интерфейс, расположив на форме с помощью панели инструментов управления (Toolbox), следующие объекты управления: Label (Метка), TextBox (Текстовое поле), CommandButton (Командная кнопка).

  • В окне Properties (Свойства) для каждого объекта управления установить свойства, приведённые в таблице 1.

Таблица 1.

Элемент управления

Свойства

Значения

UserForm

Caption

Задание 2

Label1

Caption

Вычисление значения функции y=sin5x+cos3x

Label2

Caption

X=

Label3

Caption

Y=

TextBox1

Name

TextBox1

TextBox2

Name

TextBox2

CommadButton1

Name

cmdRun

Caption

Вычислить

CommadButton2

Name

cmdClear

Caption

Очистка

  • Для перехода в окно программирования нажмите правую кнопку мыши на объекте CommandButton и в появившимся контекстом меню выбрать команду View Code или двойной щелчок мыши.

  • Между строками «Private Sub cmdRun_Click()» и «End Sub» введите следующий код программы:

Private Sub cmdRun_Click()

Dim X As Single

Dim Y As Single

X = Val(TextBox1.Text)

Y = sin(5*x)+cos(3*x)

TextBox2=Y

End Sub

  • Примерный интерфейс программы и контрольные значения:

  • Для очистки текстовых полей формы между строками «Private Sub cmdClear_Click()» и «End Sub» введите следующий код программы:

TextBox1 = «»

TextBox2 = «»

Напишите программу, которая бы вычисляла значение функции z=2x+3,5y2

Создайте в сетевой папке вашей группы свою папку под вашей фамилией и сохраните файл под именем «Функция2»

ТЕМА
– РАБОТА С МАКРОСАМИ В ФОРМАХ

Содержание

Часть 2. Макросы в формах Excel

Часть 1. Макросы в формах Word

Задание
— В текстовом редакторе
Word
создать форму, позво­ляю­­щую
включить или иск­лю­чить любой из
четы­рёх элементов заголовка: имя,
адрес, номер телефо­на и факса или
адрес элект­ронной почты.

Форма
должна иметь такой же вид, как и на
рисунке 1.

Создание
такой диалоговой формы можно разбить
на 2 этапа:

  • создание
    формы;

  • создание
    кода для использования формы.

АЛГОРИТМ

1. Создание формы.

  1. Откройте
    редактор VBA.
    (Alt + F11)

  2. Если
    в редакторe VBA
    окно проекта не отображается на экране,
    нажмите сочетание клавиш [Ctrl]+[R]
    для его открытия.

  3. В
    списке проектов выберите проект Normal.

  4. Выполните
    команду InsertUserForm
    (ВставкаUserForm).

  5. Щёлкните
    в пределах формы. При этом на экране
    будет отображена Панель элементов
    (Toolbox),
    содержащая элементы управления, которые
    могут быть добавлены в форму.

  6. В
    окне свойств
    присвойте свойству
    Name
    имя FrmLetterHead.

  7. Свойству
    Caption
    присвойте Заголовок
    письма
    .

  8. Щёлкните
    на кнопке Флажок (CheckBox)
    на панели элементов, а затем щёлкните
    в левом верхнем углу формы, чтобы
    обозначить место в форме для размещения
    создаваемого флажка. (Созданный флажок
    получает имя по умолчанию CheckBox1)

  9. Трижды
    повторите шаг 8
    для создания остальных флажков.

  10. Используя
    команды меню FormatAlign
    (ФорматВыравнять)
    разместите четыре созданных флажка в
    столбец, распложенный вдоль левого
    края формы.

  11. Разместить
    под созданными флажками кнопку
    (CommandButton).

  12. Оставив
    кнопку CommandButton1
    выделенной, выделите свойство
    Name
    в окне свойств и измените его значение
    на cmdHeading.

  13. Выделите
    свойство Caption
    (Подпись)
    и измените его значение на Создать
    заголовок
    .

  14. Поочередно
    выделите каждый из четырёх флажков и
    измените значения свойств Name
    и Caption
    для них в соответствии с таблицей1.

Таблица
1.
Значение
свойств для флажков.

Исходное
имя флажка

Новое
значение свойства Name

Новое
значение свойства Caption

CheckBox1

ChkName

Имя

CheckBox2

ChkAddress

Адрес

CheckBox3

ChkPhones

Телефон
и факс

CheckBox4

chkEmail

Электронная
почта

  1. Выделите
    всю форму, выполнив щелчок на её строке
    заголовка, а затем, перетаскивая один
    из угловых размерных маркеров, уменьшите
    её до необходимого размера.

  2. Проверьте,
    как отображается созданная форма, нажав
    [F5].

  3. Вернитесь
    в окно редактора.

  4. Активизируйте
    элемент ChkName.

  5. Установите
    для свойства ControlTipText
    значение: Вставляет
    в документ имя адресата
    .

  6. Запустите
    форму. Подведите указатель мыши к флажку
    для имени и задержите мышь. Должна
    появиться всплывающая подсказка.

  7. Определите
    подсказки для остальных флажков.

Задание
2. Подготовка
кода для использования в форме.

У
Вас есть готовый код макроса
Заголовок_для_письма,
который надо переработать. При доработке
кода необходимо учитывать следующие
моменты:

  • основная
    процедура макроса должна обеспечивать
    открытие формы Заголовок письма. После
    того как форма будет открыта, её код
    будет управлять выполнением программы
    до завершения операции;

  • поскольку
    макрос должен отвечать на щелчок на
    кнопке Создать
    заголовок,
    не­обходимо
    переместить имеющийся код макроса,
    осуществляющий вставку текста,
    в определенную процедуру обработки
    события, связанную с формой Заголовок
    письма.
    А именно, в процедуру cmdHeading_Click,
    выполняемую
    при щелчке
    на кнопке Создать
    заголовок.
    Все действия, связанные со вставкой
    текста в
    документ, выполняются в рамках именно
    этой процедуры.

  • необходимо
    дополнить процедуру cmdHeading_Click
    четырьмя
    условными структурами.
    Это позволит определять, какие строки
    текста подлежат встав­ке
    в документ, основываясь на значениях
    представленных флажками пара­метров.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Summary: My company sends out letters to customers and wants me to write a macro to fill in different text form fields that have been set up in a word document since a very limited amount of things change between different letters sent out. I’ve done macros in excel, but this is my first encounter with ms-word macros

Problem: I’ve had a hard time finding effective, intelligent navigation through ms-word. I did find this article about moving in different directions
which is really the same as the arrow keys. Was hoping to get some insight into the best way to navigate the word document. For example should I do a loop of moving to the right 1 space until I find something meaningful or is there a more effective way?

Question: Is it possible to store a specific form location in a variable or does ms-word have no coordinate system?

Thanks in advance!

asked Aug 16, 2012 at 13:34

Mike Kellogg's user avatar

Mike KelloggMike Kellogg

1,1585 gold badges15 silver badges34 bronze badges

9

To work with the content controls, you have to ensure that you have set the Title of the control. You can also set the Tag as well if you want. See Snapshot

enter image description here

And then you can use this code to update the content control or retrieve it’s value

Sub Sample()
    Dim cc As ContentControl

    For Each cc In ActiveDocument.ContentControls
        If cc.Title = "MyTextBox1" Then
            cc.Range.Text = "Hello World!"
            Exit For
        End If
    Next cc
End Sub

When you run the code, this is how it looks

enter image description here

To get the control’s text you can use Debug.Print cc.Range.text

answered Aug 16, 2012 at 16:25

Siddharth Rout's user avatar

Siddharth RoutSiddharth Rout

146k17 gold badges206 silver badges250 bronze badges

1

There are at least three types of Form Field in recent Windows version of Word — Content Controls, «Legacy Form Fields» and ActiveX Form Fields. Assuming you are dealing with Legacy Form Fields, you should be able to index the FormFields collection using the bookmark name, then use, e.g.

ActiveDocument.FormFields("Text1").Result = "mytextformfieldresult"

ActiveDocument.FormFields("DropDown1").Result = "mydropdownformfieldresult"

ActiveDocument.FormFields("Check1").Checkbox.Value = True

answered Aug 16, 2012 at 16:50

1

You should be able to create bookmarks at various places in the document that you need to go to. In modern Word, this is on the «Insert» tab, in the «Links» group. Then you can access the bookmarks from VBA and insert text into them with this sort of code:

ActiveDocument.Bookmarks("myBookmark").Range.InsertBefore "Inserted Text"

This MVP site has more data on the technique. Also, MSDN has some data on bookmark objects.

answered Aug 16, 2012 at 13:56

dsolimano's user avatar

dsolimanodsolimano

8,7903 gold badges48 silver badges63 bronze badges

1

Продолжаем серию заметок по теме автоматизации документов.

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

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

Использование шаблона необходимо, ведь на его основе вы в дальнейшем будете создавать свои документы.

Распакуйте файл из архива и поместите его в папку с шаблонами редактора Word. Как правило, эта папка находится по адресу: C:Documents and SettingsИМЯ_ПОЛЬЗОВАТЕЛЯApplication DataMicrosoftШаблоны.

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

Исходя из этого мы добавим в документ следующие закладки:

  • name
  • company
  • address
  • date
  • salutation

Обратите внимание, реквизитов адресата, которые должно содержать письмо, на самом деле может быть много, а закладок мы определили всего пять. Это логично, так как в дальнейшем мы будем подставлять несколько реквизитов к одной закладке (например, адрес, который будет состоять из индекса, названия города, области, улицы).

После добавления закладок (и если у вас включен режим отображения меток закладок), наш документ будет выглядеть примерно как на рисунке ниже (щелкните по картинке для ее увеличения):

Эти метки закладок после нажатия кнопки «Внести данные» будут заменены на конкретные тексты.

Не забывайте сохранять сделанные вами изменения в шаблоне на всякий «пожарный» случай.

На втором шаге мы создадим специальную форму с текстовыми полями, которая будет открываться при создании каждого нового документа на основе вашего шаблона письма. Кратко расскажу, как добавить в шаблон форму.

  • Откройте редактор Visual Basic с помощью сочетания клавиш «Alt»+«F11». Убедитесь, что в окне проектов выделен ваш шаблон:
  • В меню Insert выберите команду UserForm. В окне проектов будет создан новый объект Forms с пустой формой или просто добавлен в проект модуль userForm.
  • Разместите на форме необходимые элементы. Например, как на рисунке ниже:

Текстовые поля (со стандартными именами TextBox1) были мною переименованы с учетом их назначения. Обратите внимание в нижеприведенном коде, как они теперь называются.

Третий шаг — написание кода для элементов нашей формы.

  1. В меню Insert выберите команду Module. В окне проектов будет создан новый модуль Module1. Дважды щелкните по модулю и перейдите в окно редактирования кода. Вставьте следующий код:
  2. Sub AutoNew()
    Dim oF As MyForm
    Set oF = New MyForm
    oF.Show
    Set oF = Nothing
    End Sub

    Этот код запускает форму каждый раз при создании нового документа на основе вашего шаблона.

  3. Перейдите на модуль UserForm1. Переименуйте его в MyForm.
  4. Нажмите клавишу «F7» и в окне редактора кода вставьте следующий код (содержит процедуры для действий с элементами формы):
  5. Private Sub CommandButton1_Click()
    'Действия формы по нажатию кнопки "Ввести данные"
    Dim bm As Bookmarks
    Dim rng As Word.Range
    Dim addr As String
    Dim sText As String
    Dim sResult1 As String
    Dim sResult2 As String
    Dim arName() As String  
    Set bm = ActiveDocument.Bookmarks
    sText = Me.tbName.Text  'присваиваем переменной текст из текстового поля "Имя адресата"
    arName = Split(sText)   'создаем массив из отдельных слов, вместе составляющих ФИО адресата
    'Действия с полем "Дата"
    With Me.tbDate
       If Not IsDate(.Text) Then  'если данные введены не в формате даты, то
          MsgBox "В поле ""Дата"" неверно введены данные."   'выводим сообщение
          .Text = Format(Now, "dd MMMM yyyy") 'автоматически заполняем поле текущей датой
          .SetFocus   'фокус на поле "Дата"
          .SelStart = 0  '
          .SelLength = Len(.Text) 'выделяем весь текст в поле, начиная с левого края
          Exit Sub
       Else
          Set rng = bm("date").Range 'присваиваем переменной rng ссылку на закладку "date"
          rng.Text = .Text & " г."   'определяем новый текст закладки
          bm.Add "date", rng   'заменяем закладку
       End If
    End With
    Set rng = bm("name").Range 'присваиваем переменной rng ссылку на закладку "name"
    sResult1 = arName(0) & " " 'присваиваем переменной значение первого слова из поля "Имя адресата" и добавляем пробел
    sResult1 = sResult1 & Left(arName(1), 1) & ". " 'добавляем к первому слову первую букву Имени и точку
    sResult1 = sResult1 & Left(arName(2), 1) & "."  'добавляем первую букву Отчества и точку
    rng.Text = sResult1  'определяем новый текст закладки
    bm.Add "name", rng   'заменяем закладку
    Set rng = bm("company").Range 'присваиваем переменной rng ссылку на закладку "company"
    rng.Text = Me.tbCompany  'определяем новый текст закладки
    bm.Add "company", rng   'заменяем закладку
    If Len(sText) > 0 Then  'если в поле "Имя адресата" есть какие-то символы, то
        sText = sResult1 & vbCr   'присваиваем переменной текст закладки "name" и переводим строку
    End If
    If Len(Me.tbCompany.Text) > 0 Then  'если в поле "Организация" есть какие-то символы, то
       Me.tbCompany.Text = Me.tbCompany.Text & vbCr   'присваиваем переменной текст из поля и переводим строку
    End If
    If Len(Me.tbAddress.Text) > 0 Then  'если в поле "Адрес" есть какие-то символы, то
       Me.tbAddress.Text = Me.tbAddress.Text   'присваиваем переменной текст из поля
    End If
    If Len(Me.tbIndex.Text) > 0 Then 'если в поле "Индекс" есть какие-то символы, то
       Me.tbIndex.Text = Me.tbIndex.Text & ","    'присваиваем переменной текст из поля и добавляем запятую
    End If
    If Len(Me.tbCity.Text) > 0 Then  'если в поле "Город" есть какие-то символы, то
       Me.tbCity.Text = Me.tbCity.Text & "," 'присваиваем переменной текст из поля и добавляем запятую
    End If
    If Len(Me.tbOblast.Text) > 0 Then   'если в поле "Область" есть какие-то символы, то
       Me.tbOblast.Text = Me.tbOblast.Text & "," 'присваиваем переменной текст из поля и добавляем запятую
    End If
    'присваиваем переменной фрагментов текста из полей "Индекс", "Город", "Область" и "Адрес"
    addr = Me.tbIndex.Text & " " & Me.tbCity.Text & " " & Me.tbOblast.Text & " " & Me.tbAddress.Text
    Set rng = bm("address").Range 'присваиваем переменной rng ссылку на закладку "address"
    rng.Text = addr   'определяем новый текст закладки из переменной addr
    bm.Add "address", rng   'заменяем закладку
    Set rng = bm("salutation").Range 'присваиваем переменной rng ссылку на закладку "salutation"
    rng.Text = Me.tbSalutation.Text  'определяем новый текст закладки
    bm.Add "salutation", rng   'заменяем закладку
    Unload Me   'Закрываем форму
    ActiveDocument.Range.Fields.Update  'Обновляем все поля в документе
    End Sub
  6. Ниже этого кода вставьте следующий код:
  7. Private Sub CommandButton2_Click()
    'Выход из формы и закрытие окна документа при нажатии кнопки "Отменить"
    On Error GoTo ErrLabel
    Unload Me    'Закрываем форму
    ActiveDocument.Close  'Закрываем текущий документ
    ErrLabel:
    End Sub
    Private Sub tbIndex_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'Устанавливаем правила заполнения поля "Индекс"
    With Me.tbIndex
       If Not IsNumeric(.Text) Or Len(.Text) <> 6 Then 'если в поле "Индекс" данные не цифры и меньше 6, то
          MsgBox "Ошибка!" & " " & "Введите 6 цифр индекса города или района." 'выводим сообщение
          Cancel = True  'возвращаемся к полю
          .Text = ""  'очищаем поле
          .SetFocus
       End If
    End With
    End Sub
    Private Sub tbName_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    'При выходе из поля "Имя адресата" его имя подставляется в поле "Приветствие"
    sText = Me.tbName.Text
    arName = Split(sText)
    sResult2 = arName(1) & " "
    sResult2 = sResult2 & arName(2)
    Me.tbSalutation = "Уважаемый " & sResult2 & "!"
    End Sub
    Private Sub UserForm_Initialize()
    Me.tbDate = Format(Now, "dd MMMM yyyy")
    With Me.tbName
       .Text = "Фамилия Имя Отчество"
       .SetFocus
       .SelStart = 0
       .SelLength = Len(.Text)
    End With
    End Sub
  8. Сохраните проект и попробуйте создать на основе вашего шаблона новый документ. Введите необходимые данные в поля формы и нажмите кнопку «Внести данные».

Вы можете скачать уже готовый шаблон письма и подредактировать его под свои нужды.

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

Образцом для шапки шаблона послужила картинка из шаблона городского письма редактора Word 2007.

Образцом кода для данного макроса и формы послужила заметка Gregory Maxey Address a Letter Using as UserForm.

Like this post? Please share to your friends:
  • Vba for word and excel
  • Vba for word 2013
  • Vba for word 2010
  • Vba for word 2007
  • Vba procedures in excel