有没有办法使用组合框数据 (VBA) 更改 Word 文档的文件名和电子邮件主题?

Is there a way to change a Word document's filename and email subject using combobox data (VBA)?

我正在尝试设置一个表单,以便当从 ComboBox 中选择一个主题(在我的示例中是动物)时,它会同时更改文件名和电子邮件的主题行。目前,它只是在您单击提交按钮时发送一封电子邮件,但我需要根据选择的主题来区分文件。我试过寻找答案,但到目前为止我还没有遇到任何相关的问题。

ComboBox 中有四个条目。老虎、猴子、大象、长颈鹿。

ComboBox 名为 "Animals",它的标签是 "ComboBox1"

不幸的是,无论出于何种原因,我无法上传图片,但如果有帮助,它是 "Combo Box Content Control"。抱歉,我对这些东西的了解有限,让我走到这一步并借用其他代码段主要是反复试验。

任何建议都会有所帮助。

Private Sub Submit_Click()
Dim objOutlook As Object
Dim objOutlookMsg As Object
Dim objInspector As Object
Dim objDoc As Word.Document
Dim objRange As Range
Dim sDocname As String




ActiveDocument.Save
sDocname = ActiveDocument.FullName

If Len(ActiveDocument.Path) = 0 Then
    MsgBox "Document is not saved!"
    GoTo lbl_Exit
End If
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
If Err <> 0 Then
    MsgBox "Outlook is not running."

    GoTo lbl_Exit
End If
On Error GoTo 0

Set objOutlookMsg = objOutlook.createitem(0)
With objOutlookMsg
    .To = "email@emailaddress.com"
    .Cc = ""
    .Subject = "Favourite Animal is "
    .attachments.Add sDocname
    Set objInspector = .GetInspector
    Set objDoc = objInspector.WordEditor
    Set objRange = objDoc.Range(0, 0)
    .Display
    objRange.Text = "My favourite animal is the "


    .Send
End With
lbl_Exit:
Set objDoc = Nothing
Set objRange = Nothing
Set objOutlookMsg = Nothing
Set objInspector = Nothing
Set objOutlook = Nothing
Exit Sub
End Sub

这样的事情怎么样?

Private Sub Submit_Click()
Dim objOutlook As Object
Dim objOutlookMsg As Object
Dim objInspector As Object
Dim objDoc As Word.Document
Dim objRange As Range
Dim sDocname As String

'new declarations.
Dim cmb As ContentControl
Dim sSelText As String

'get a reference of the combobox.
    Set cmb = ThisDocument.SelectContentControlsByTag("Combobox1")(1)
'get the selected item in a variable.
    sSelText = cmb.Range.Text
    Set cmb = Nothing
'enforce making a selection.
    If sSelText = "DEFAULT_TXT" Then 'write here the default text of your combobox.
        MsgBox "Please select subject from the dropdown menu.", vbCritical, "No selection!"
    Else
        ActiveDocument.Save
        sDocname = ActiveDocument.FullName
        If Len(ActiveDocument.Path) = 0 Then
            MsgBox "Document is not saved!", vbCritical, "Error!"
            GoTo lbl_Exit
        End If
        On Error Resume Next
        Set objOutlook = GetObject(, "Outlook.Application")
        If Err <> 0 Then
            MsgBox "Outlook is not running."
            GoTo lbl_Exit
        End If
        On Error GoTo 0
        Set objOutlookMsg = objOutlook.createitem(0)
        With objOutlookMsg 'use the selected item as you wish.
            .To = "email@emailaddress.com"
            .Cc = ""
            .Subject = "Favourite Animal is " & sSelText
            .attachments.Add sDocname & "_" & sSelText
            Set objInspector = .GetInspector
            Set objDoc = objInspector.WordEditor
            Set objRange = objDoc.Range(0, 0)
            .Display
            objRange.Text = "My favourite animal is the " & sSelText
            .Send
        End With
    End If
lbl_Exit:
Set objDoc = Nothing
Set objRange = Nothing
Set objOutlookMsg = Nothing
Set objInspector = Nothing
Set objOutlook = Nothing
End Sub