从用户表单在 Word 中创建页脚

问题描述 投票:0回答:1

我对 VBA 很陌生。我正在尝试创建一个脚本,该脚本将同时更新多个Word文档中的页脚。页脚中需要输入的三项内容是:城市和州、商店编号和日期。页脚将居中,但我可以稍后修改格式。

目前我正在尝试创建一个脚本,该脚本将: 提示用户打开多个Word文档 然后显示一个用户表单,提示用户在文本框中输入数据 然后将从这些框中输入的信息放入文档的页脚中。

我创建的第一个代码将执行所有这些操作,但它不使用用户窗体,而是使用 3 个连续的输入提示让用户输入数据,然后从中创建页脚。我目前的代码(没有用户表单,只有输入框):

    Sub openAllfilesInALocation()
Dim Doc
Dim i As Integer
Dim varCity
Dim varStoreNumber
Dim varDate

Dim docToOpen As FileDialog
Set docToOpen = Application.FileDialog(msoFileDialogFilePicker)
    docToOpen.Show
varCity = InputBox("City")
varStoreNumber = InputBox("Store Number")
varDate = InputBox("Document Date")

For i = 1 To docToOpen.SelectedItems.Count
'Open each document
Set Doc = Documents.Open(FileName:=docToOpen.SelectedItems(i))

With ActiveDocument.Sections(1)
    .Footers(wdHeaderFooterPrimary).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Footers(wdHeaderFooterPrimary).Range.Text = varCity & " " & varStoreNumber & " " & varDate
    
End With

Doc.Save
Doc.Close

Next i

End Sub

如果我创建一个包含 3 个文本框(一个用于城市和州,一个用于商店编号,一个用于日期)以及一个提交按钮和取消按钮的用户表单,我需要做什么才能让它引用用户表单并从文本框中获取数据并将其输入到页脚中?

我的代码(使用输入框的代码)可以工作,但想删除输入框并将其替换为一个用户表单。但是,我不知道在文本框和命令按钮例程中编辑什么,也不知道如何让我的代码引用用户窗体和文本框。

vba ms-word userform
1个回答
0
投票

假设用户窗体的名称为 Userform1,文本框的名称为 TextBox1、TextBox2、TextBox3。提交按钮的名称为 CommandButton1,取消按钮的名称为 CommandButton2。

如果单击取消,脚注将被删除。如果您不想要它,请删除 CommandButton2_Click 子项中分配的 3 行。

检查日期是否有效并应用本地格式。

模块

Public varCity       'make avail for the userform
Public varStoreNumber
Public varDate

Sub openAllfilesInALocation()
Dim Doc
Dim i As Integer

Dim docToOpen As FileDialog
Set docToOpen = Application.FileDialog(msoFileDialogFilePicker)
    docToOpen.Show

UserForm1.Show
'varCity = InputBox("City")
'varStoreNumber = InputBox("Store Number")
'varDate = InputBox("Document Date")

For i = 1 To docToOpen.SelectedItems.Count
'Open each document
Set Doc = Documents.Open(FileName:=docToOpen.SelectedItems(i))

With ActiveDocument.Sections(1)
    .Footers(wdHeaderFooterPrimary).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
    .Footers(wdHeaderFooterPrimary).Range.Text = varCity & " " & varStoreNumber & " " & varDate
    
End With

Doc.Save
Doc.Close

Next i

End Sub

用户表单代码模块

Private Sub CommandButton1_Click()
varCity = UserForm1.TextBox1
varStoreNumber = UserForm1.TextBox2
varDate = UserForm1.TextBox3
On Error Resume Next
If IsError(CDate(varDate)) Then
UserForm1.TextBox3.SetFocus
Else
varDate = CDate(varDate)
VBA.Unload UserForm1
End If
On Error GoTo 0
End Sub

Private Sub CommandButton2_Click()
Me.hide
varCity = ""
varStoreNumber = ""
varDate = ""
End Sub

建议添加 3 个标签来识别文本框。

© www.soinside.com 2019 - 2024. All rights reserved.