У меня повторяющаяся задача, которую я пытаюсь автоматизировать.Пользователь чертит кусок текста в Word, который часто насчитывает более 3000 символов.Этот текст необходимо ввести на веб-сайт, который имеет поля через Internet Explorer (IE).Эти поля могут содержать только около 230 символов, включая пробелы.Ограничение: пользователи не могут вводить текст непосредственно в поля IE.
В идеале я хотел бы использовать MS WORD и VBA для чтения фрагмента текста и разделения его на мини-фрагменты по 230 символов, но не для разделения целых слов.в процессе.Затем добавьте эти мини-чанки в буфер обмена и программно доставьте их в поля на веб-странице IE.
Я не могу понять, как разбить большой кусок на 230-символьные мини-чанки, хотя одновременнорасщепление целых слов.Итак, я создал поля текстовой формы и установил максимальную длину в 230 символов.Пользователь вводит текст в поле формы текста 1 до его заполнения, а затем возобновляет ввод в поле формы текста 2 до заполнения, а затем возобновляет ввод в поле формы текста 3 и т. Д.Это решает проблему разделения слов, поскольку пользователь может переходить в новое поле текстовой формы без разделения слов.
Я могу создать командную кнопку 1 и скопировать содержимое поля текстовой формы 1 в буфер обмена, а затем отправить ключ содержимого поля текстовой формы 1 в буфере обмена в первое поле в IE и отправить ключ вкладки для перемещенияточка вставки в следующее пустое поле в IE.
Я могу создать командную кнопку 2 и скопировать содержимое поля текстовой формы 2 в буфер обмена, а затем отправить ключ содержимого поля текстовой формы 1 в буфере обмена во второйполе в IE и sendkey вкладка для перемещения точки вставки в следующее пустое поле в IE… и так далее до тех пор, пока поле N-й текстовой формы и кнопка N-й команды не облегчат перемещение мини-блоков в поля IE.Ограничение: Я не могу изменить ограничение на количество символов, налагаемое веб-сайтом IE.
Это неуклюже, поскольку требует, чтобы пользователь вручную разделил большой кусок текста, введя несколько полей формы текста, а затем щелкнул несколько командкнопки, чтобы получить все отдельные поля текстовой формы, добавленные в буфер обмена и программно доставленные в поля веб-страницы IE.
Я не могу понять, как программно анализировать большой фрагмент.Кроме того, очевидно, что системный буфер обмена может копировать / вставлять только один мини-блок за раз.Насколько я понимаю, буфер обмена Office может хранить 24 уникальных экземпляра копии, но VBA не может получить доступ к буферу обмена Office.Было бы здорово, если бы текст мог быть проанализирован программно.Было бы здорово, если бы был способ перебирать и копировать отдельные поля текстовой формы одним щелчком мыши.
Есть ли способ?
Private Sub SendToXYZButton1_Click()
Dim strText As String
Selection.GoTo What:=wdGoToBookmark, Name:="XYZremarks1"
strText = Selection.Text
If Len(strText) = 0 Then
MsgBox "Sorry, no XYZ Remark(s) was detected in the ""Drafting Field""." & vbCr & vbCr & "The XYZ Remark(s) was not sent to XYZ. Please complete your XYZ Remark(s) and click ""Send to XYZ"" again!", vbExclamation, "Empty Drafting Field- Not Sent to XYZ"
Exit Sub
End If
If InStr(strText, "*") > 0 Then
MsgBox "Sorry, one or more asterisks (*) was detected in the ""Drafting Field,"" which indicates one or more drop-down menus or date controls was not yet completed." & vbCr & vbCr & "The XYZ Remark(s) was not sent to XYZ. Please complete your XYZ Remark(s) and click ""Send to XYZ"" again!", vbExclamation, "Unfinished Statement(s)- Not Sent to XYZ"
Exit Sub
ElseIf InStr(strText, "---") > 0 Then
MsgBox "Sorry, one or more drop-down menus was improperly completed." & vbCr & vbCr & "The XYZ Remark(s) was not sent to XYZ. Please complete your XYZ Remark(s) and click ""Send to XYZ"" again!", vbExclamation, "Unfinished Statement(s)- Not Sent to XYZ"
Exit Sub
ElseIf InStr(strText, "[") > 0 Or InStr(strText, "]") > 0 Then
MsgBox "Sorry, one or more [freehand text fields] was not yet completed." & vbCr & vbCr & "The XYZ Remark(s) was not sent to XYZ. Please complete your XYZ Remark(s) and click ""Send to XYZ"" again!", vbExclamation, "Unfinished Statement(s)- Not Sent to XYZ"
Exit Sub
End If
'RunSpellcheck
Selection.GoTo What:=wdGoToBookmark, Name:="XYZremarks1"
strText = Selection.Text
Dim myDO As DataObject
Set myDO = New DataObject
myDO.SetText Selection.Text
myDO.PutInClipboard
AppActivate ("XYZ, Details Page - Internet Explorer")
'SendKeys "^V" Explorer versus Chrome is very picky about case of the "v"
'Restores numlock key to on, BUT irrespective of previous state.
If Selection.Information(wdNumLock) = False Then
SendKeys ("^v")
SendKeys ("{tab}")
SendKeys ("{tab}")
Else
SendKeys ("^v")
SendKeys ("{tab}")
SendKeys ("{tab}")
SendKeys "{NUMLOCK}%s"
End If
MsgBox "Please inspect and confirm that your completed XYZ Remark(s) correctly populated into the XYZ ""XYZ Remark(s)"" drafting field(s).", vbOKOnly Or vbExclamation, "Warning! Data Sent to XYZ- Please Confirm!"
Exit Sub
End Sub