Excel VBA打开多个Word 2010文档并确定是否选中复选框

Excel VBA打开多个Word 2010文档并确定是否选中复选框,excel,vba,checkbox,ms-word,Excel,Vba,Checkbox,Ms Word,我试图创建一个报告,分析文件夹中的多个word文档,并分析文档中的复选框,以确定一组测试是否通过或失败。我有循环遍历文件夹中所有文档的代码,但我很难确定如何确定是否选中了框 我尝试评估的第一个复选框标记为“PassCheckBox”。我已经找到了几篇关于如何做到这一点的语法文章,但似乎没有一篇与我在word文件中的迭代方式相符合。当我尝试运行时,我当前的代码给我“objectisrequired” 这是我目前的代码: Sub ParseTestFiles() Dim FSO As Objec

我试图创建一个报告,分析文件夹中的多个word文档,并分析文档中的复选框,以确定一组测试是否通过或失败。我有循环遍历文件夹中所有文档的代码,但我很难确定如何确定是否选中了框

我尝试评估的第一个复选框标记为“PassCheckBox”。我已经找到了几篇关于如何做到这一点的语法文章,但似乎没有一篇与我在word文件中的迭代方式相符合。当我尝试运行时,我当前的代码给我“objectisrequired”

这是我目前的代码:

Sub ParseTestFiles()
  Dim FSO As Object
  Dim fPath As String
  Dim myFolder, myFile
  Dim wdApp As Object
  Dim PassValue As Boolean

  fPath = ActiveWorkbook.Path
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set myFolder = FSO.GetFolder(fPath).Files
  For Each myFile In myFolder
    If LCase(myFile) Like "*.doc" _
    Or LCase(myFile) Like "*.docx" Or LCase(myFile) Like "*.docm" Then

      On Error Resume Next
      Set wdApp = GetObject(, "Word.Application")
      If Err.Number <> 0 Then 'Word not yet running
        Set wdApp = CreateObject("Word.Application")
      End If

      On Error GoTo 0
      wdApp.Documents.Open CStr(myFile)
      wdApp.Visible = True
      ' Here is where I'm having an issue
      PassValue = ActiveDocument.FormFields("PassCheckBox").Checked

      Set wdApp = Nothing
    End If 'LCase
  Next myFile

End Sub
子ParseTestFiles()
作为对象的Dim FSO
作为字符串的Dim fPath
我的文件夹,我的文件
作为对象的应用程序
将PassValue设置为布尔值
fPath=ActiveWorkbook.Path
设置FSO=CreateObject(“Scripting.FileSystemObject”)
设置myFolder=FSO.GetFolder(fPath).Files
对于myFolder中的每个myFile
如果LCase(myFile)像“*.doc”_
或者像“*.docx”这样的LCase(myFile)或者像“*.docm”这样的LCase(myFile)
出错时继续下一步
Set wdApp=GetObject(,“Word.Application”)
如果错误号为0,则“Word尚未运行”
Set wdApp=CreateObject(“Word.Application”)
如果结束
错误转到0
wdApp.Documents.Open CStr(myFile)
wdApp.Visible=True
这就是我的问题所在
PassValue=ActiveDocument.FormFields(“PassCheckBox”)。已选中
设置wdApp=Nothing
结束如果'LCase
下一个myFile
端接头
尝试使用:

Dim c, wdDoc
Set wdDoc = wdApp.Documents.Open(CStr(myFile))
wdApp.Visible = True
For Each c In wdDoc.ContentControls
    If c.Title = "PassCheckBox" Then
        PassValue = c.Checked
        Exit For
    End If
Next
反而

wdApp.Documents.Open CStr(myFile)
wdApp.Visible = True

PassValue = ActiveDocument.FormFields("PassCheckBox").Checked

删除集合时仍出现“424”运行时错误。消息是“需要对象”几秒钟前我已经更新了我的asnwer。请尝试此
PassValue=ActiveDocument.FormFields(“PassCheckBox”).CheckBox.Value
在调试时仍然收到相同的424运行时错误,并突出显示了PassValue行。相同的消息,但现在在同一行“对于ActiveDocument中的每个c。。。线路。我想知道我打开word文档的方式是否会影响VBA解释哪个文档处于活动状态的方式。请立即尝试,顺便问一下,您使用的word版本是什么?