通过使用VBA宏获取Word中TextBox的值,但在Word模板中

时间:2012-07-06 13:44:57

标签: vba ms-word word-vba word-template

背景:我想使用TextBox中的特定输入文本作为SaveAs对话框中的默认文件名。

我在我的文档中实现了以下VBA脚本,即Word 2010模板.dotm

Sub FileSaveAs()

'for testing
Dim fileName As String
fileName = Me.tb_myTextBox.Value & "_MyFileNameToSave"
MsgBox fileName

'use specific file name in save dialog
With Dialogs(wdDialogFileSaveAs)
  .Name = fileName
  .Show
 End With

End Sub

当我运行它时它工作正常。我保存了.dotm,关闭它并从Windows资源管理器中重新打开它(意思是“最终用户”)。 但在这种情况下,意味着在打开模板文档作为“最终用户”(以便我可以保存新的doc而不覆盖模板)之后,即使我输入了某些东西,TextBox的内容/值也是空的进入它。

那么,如何在模板的“文档模式”中读出TextBox的数据?

2 个答案:

答案 0 :(得分:0)

  

如何在模板的“文档模式”中读出TextBox的数据?

不确定你的意思。这对我有用:

创建表单:

Private Sub btn_OK_Click()
    Dim fileName As String
    fileName = tb_myTextBox.Value & "_MyFileNameToSave"
    With Dialogs(wdDialogFileSaveAs)
      .name = fileName
      .Show
     End With
End Sub

创建一个子来调用此表单:

 Sub FileSaveAs()
    UserForm1.Show
End Sub

这全部保存在模板/ .dotm中。

现在,从模板创建一个文档(双击模板以启动文档)。 Alt + F8并从模板运行宏(您可能必须从“Macros in”下拉列表中选择模板)。结果:我的表单出现,我输入文档的名称,按确定,然后出现Word Save As对话框,其中包含我给文档的名称。

答案 1 :(得分:0)

大概,OP的意图与以下方面类似:

Sub FileSaveAs()
Dim StrNm As String
With ActiveDocument
  StrNm = Split(.Shapes(1).TextFrame.TextRange.Text, vbCr)(0) & "_MyFileNameToSave"
  'use specific file name in save dialog
  With Dialogs(wdDialogFileSaveAs)
    .Name = StrNm
    .Show
  End With
End With
End Sub

其中.Shapes(1)标识特定的文本框Shape对象。