К сожалению, Лекс Ли был абсолютно прав, и, конечно же, ссылка на причину, по которой моя компания размещает информацию на сайте, который считается недопустимым, таким образом, никогда не обнаруживалась в моих поисках в Google до кодирования.
Ни один из инструментов, которые я пробовал, также не смог обработать форму, которую я пытался автоматизировать - мне нужно было заполнить именованные поля и поставить / снять флажки, способности, которые казались мне более (или ужасно сложными) инструментами, которые я оценивал. ..
В конце концов я сам копался в формате document.xml;Я разработал функцию изменения XML для проверки именованного флажка и манипулировал необработанным document.xml, чтобы заменить текстовые поля именами * -delimited токенов. Это уменьшило все необходимые изменения до простой манипуляции со строками - все остальное было тривиально.
Инструмент на 100% доморощенный, не зависит от каких-либо несистемных библиотек и работает на 100% для этой конкретной формы. Это не общее решение, и я подозреваю, что файл document.xml будет нуждаться в ручных изменениях, если и когда документ когда-либо будет пересматриваться.
Но для этой конкретной проблемы - это решение.
Это было ближе всего к сложной части. Эта функция будет проверять (но не снимать флажок) именованный флажок из document.xml , если заданное условие истинно.
Private Shared Function markCheckbox(xmlString As String, cbName As String, checkValue As Boolean) As String
markCheckbox = xmlString
If checkValue Then ' Checkbox needs to be checked, proceed
Dim pos As Integer = markCheckbox.IndexOf("<w:ffData><w:name w:val=""" & cbName & """/>")
If pos > -1 Then ' We have a checkbox
Dim endPos As Integer = markCheckbox.IndexOf("</w:ffData>", pos+1)
Dim cbEnd As Integer = markCheckbox.IndexOf("</w:checkBox>", pos+1)
If endPos > cbEnd AndAlso cbEnd > -1 Then ' Have found the appropriate w:ffData element (pos -> endPos) and the included insert point (cbEnd)
markCheckbox = markCheckbox.Substring(0, cbEnd) & "<w:checked/>" & markCheckbox.Substring(cbEnd)
End If
' Any other logic conditions, return the original XML string unmangled.
End If
End If
End Function