宏运行时如何查看Word文档?

时间:2019-06-19 18:46:48

标签: vba ms-word

我希望用户能够在停止宏之前查看宏生成的Word文档。这样,他们不必再次输入所有数据,因为当宏停止时,所有数据都将被擦除。有很多字段我不希望用户在出现问题时必须重新输入。

我尝试过几种不同的方式来激活宏,从在Word文档上的按钮到从VBA Alt + F11启动它,但是得到的结果是相同的:用户在编辑文档时无法编辑或查看Word文档。宏正在运行,即使它没有执行任何操作。

''' 私人子CommandButton1_Click()

InputForm.Show

结束子 '''

在宏停止并且所有输入数据被擦除之前,用户无法查看Word文档。另外,如果可以保存输入的数据,以便下次程序运行时保留该数据,那将是可行的,因为我有一个“全部清除”按钮。

1 个答案:

答案 0 :(得分:0)

在某个地方,您有一个子程序执行以下操作:

Sub foo()
UserForm1.Show
End Sub

您将需要更改它以显示vbModeless格式,以便允许用户与文档进行交互。请注意,这将允许用户在显示表单时与文档交互

Sub foo()
Dim uf As New UserForm1
uf.Show vbModeless

End Sub

如果uf.Show之后还有其他可执行代码,则可能也需要对其进行重构,因为它将在Show n形式后立即执行

如果您不希望用户在表单执行之后之前就可以进行交互,则请使用vbModeless选项 not ,然后向表单添加QueryClose事件处理程序。这样,我们询问用户是否要进行审核;如果他们说“是”,那么我们将使用vbModeless选项隐藏并重新显示该表单。现在,他们将具有打开的形式,并且该文档将是可编辑的。

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If MsgBox("Review document?", vbYesNo) = vbYes Then
    Cancel = 1
    Me.Hide
    Me.Show vbModeless
End If
End Sub

当然,这也不完全是您想要的。但是,这些要点可以单独解决。关于您的用例,我有很多未知的地方,几乎可以肯定的是,正确使用UserForm可以满足您的用例。请注意,我无法回答太多与切线相关的后续问题,但这足以让您入门。

我不确定是否可以将值以 begind 的形式持久保存,这是Terminate事件,当用户关闭表单或任何代码调用{{1} }。当然可以将这些数据序列化为文本文件,或者以某种方式将其保留在文档的自定义属性/客户数据属性中,但这应该是一个单独的问题。