Vba 内容控制不识别内容
我希望有人能帮我弄清楚,当计数值为5时,为什么下面代码中的“F”值继续在ErrorMessage字符串中包含我的错误标签 在文档中,内容控件与所有其他控件(工作正常)一样包含文本,但VBA代码中无法识别此内容控件文本值以映射错误标签 已尝试仅替换控件并检查属性是否匹配。调试消息表明该值刚刚设置为默认内容控制值“单击或点击此处输入文本”Vba 内容控制不识别内容,vba,error-handling,ms-word,controls,Vba,Error Handling,Ms Word,Controls,我希望有人能帮我弄清楚,当计数值为5时,为什么下面代码中的“F”值继续在ErrorMessage字符串中包含我的错误标签 在文档中,内容控件与所有其他控件(工作正常)一样包含文本,但VBA代码中无法识别此内容控件文本值以映射错误标签 已尝试仅替换控件并检查属性是否匹配。调试消息表明该值刚刚设置为默认内容控制值“单击或点击此处输入文本” 由于缺少数据,我无法测试您的代码,但根据您的描述,我猜必须在每个循环中重置ErrorMessage,因为它在使用时会发生更改,并且在使用后自然会保留修改后的版本
由于缺少数据,我无法测试您的代码,但根据您的描述,我猜必须在每个循环中重置ErrorMessage,因为它在使用时会发生更改,并且在使用后自然会保留修改后的版本 除了循环之后的内容外,为了理解代码,我仔细查看了您的代码。也许,我所做的改变会对你有所帮助
Option Explicit
Private Sub Create_Click()
Dim Doc As Document
Dim Mandatory() As String
Dim ErrorMessage As String
Dim ErrorCount As Integer
Dim strFilename As String
Dim strFileString As String ' this appears identical with 'Number'
Dim Number As String
Dim Count As Integer ' loop counter
Set Doc = ActiveDocument
Mandatory = Split("A B C D E F G H I")
Number = Doc.SelectContentControlsByTitle(Mandatory(0))(1).Range.Text
For Count = 1 To UBound(Mandatory) + 1
ErrorMessage = "The following mandatory fields are missing: "
With Doc.SelectContentControlsByTitle(Mandatory(Count))(1).Range
MsgBox "Number = " & Number & vbCr & .Text
If .Text = "Click or tap here to enter text." Or _
.Text = "0.00" Then
ErrorMessage = ErrorMessage & vbCrLf & vbCrLf & "- " & Mandatory(Count) & " Label"
MsgBox (.Text)
ErrorCount = ErrorCount + 1
End If
End With
If Count = 1 Then Exit For
Next Count
If ErrorCount > 0 Then
MsgBox (ErrorMessage)
Else
strFileString = Number
MsgBox (strFileString)
strFilename = "Some Text Here" & " - " & strFileString & ".pdf"
With Doc
NewPath = .Path & "\" & strFilename
.SaveAs2 FileName:=NewPath, FileFormat:=wdFormatPDF
.ExportAsFixedFormat OutputFileName:=strFilename, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent
End With
End If
End Sub
您可以让VBA将有用的(有些人会说是必要的)显式选项自动添加到所有新代码模块中。在VBE窗口中选择“工具”>“选项”,并选中“编辑器”选项卡上的“需要变量声明”。检查文档中没有其他具有相同标题的内容控件。您能分享代码的用途吗?感谢指点!我已经采取了一些这段代码,并将其应用到我的非常感谢。忘了信用证了。我确定问题在于我复制的其他内容控件的标题名与F内容控件的标题名相同。哼!因此,它将这些视为一个错误。在更改标题时,我的代码非常有效。谢谢你的帮助。
Option Explicit
Private Sub Create_Click()
Dim Doc As Document
Dim Mandatory() As String
Dim ErrorMessage As String
Dim ErrorCount As Integer
Dim strFilename As String
Dim strFileString As String ' this appears identical with 'Number'
Dim Number As String
Dim Count As Integer ' loop counter
Set Doc = ActiveDocument
Mandatory = Split("A B C D E F G H I")
Number = Doc.SelectContentControlsByTitle(Mandatory(0))(1).Range.Text
For Count = 1 To UBound(Mandatory) + 1
ErrorMessage = "The following mandatory fields are missing: "
With Doc.SelectContentControlsByTitle(Mandatory(Count))(1).Range
MsgBox "Number = " & Number & vbCr & .Text
If .Text = "Click or tap here to enter text." Or _
.Text = "0.00" Then
ErrorMessage = ErrorMessage & vbCrLf & vbCrLf & "- " & Mandatory(Count) & " Label"
MsgBox (.Text)
ErrorCount = ErrorCount + 1
End If
End With
If Count = 1 Then Exit For
Next Count
If ErrorCount > 0 Then
MsgBox (ErrorMessage)
Else
strFileString = Number
MsgBox (strFileString)
strFilename = "Some Text Here" & " - " & strFileString & ".pdf"
With Doc
NewPath = .Path & "\" & strFilename
.SaveAs2 FileName:=NewPath, FileFormat:=wdFormatPDF
.ExportAsFixedFormat OutputFileName:=strFilename, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, _
OptimizeFor:=wdExportOptimizeForPrint, _
Range:=wdExportAllDocument, _
Item:=wdExportDocumentContent
End With
End If
End Sub