Друзья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 20 человек, фио, время и место рождения, прописка), и текста там хватает. Вставляется в ворд это всё путём поиска и замены ключевого слова.
[vba]
Код
' Вставка в документ полных данных With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With
[/vba]
Но трабл в том что, программа ругается на ".Text = AllDataOtvet", ибо строковый параметр слишком большой (больше 255 символов ошибка 5854), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично. Как это счастье обойти?
Поможет ли буфер обмена?
Друзья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 20 человек, фио, время и место рождения, прописка), и текста там хватает. Вставляется в ворд это всё путём поиска и замены ключевого слова.
[vba]
Код
' Вставка в документ полных данных With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With
[/vba]
Но трабл в том что, программа ругается на ".Text = AllDataOtvet", ибо строковый параметр слишком большой (больше 255 символов ошибка 5854), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично. Как это счастье обойти?
Sub io() Dim rText As String Dim i As Integer Dim AllDataOtvet As String
rText = "НАЧАЛО " For i = 1 To 5 rText = rText & "Специально подготовленный фрагмент текста замены из нескольких строк общей длиной более 255 символов " Next i rText = rText & "КОНЕЦ"
With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With End Sub
Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена '(c) заимствовано из http://excelvba.ru/code/clipboard With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText txt$ .PutInClipboard End With End Sub
Sub io() Dim rText As String Dim i As Integer Dim AllDataOtvet As String
rText = "НАЧАЛО " For i = 1 To 5 rText = rText & "Специально подготовленный фрагмент текста замены из нескольких строк общей длиной более 255 символов " Next i rText = rText & "КОНЕЦ"
With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With End Sub
Sub SetClipboardText(ByVal txt$) ' запись в буфер обмена '(c) заимствовано из http://excelvba.ru/code/clipboard With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText txt$ .PutInClipboard End With End Sub
Gustav, Спс Может я не до конца правильно всё объяснил, но твой ответ в конечном ответе принес результат. ВБ по итогу ругалась на некоторые строки, но помогло всего лишь их удаление, по итогу получился вот такой код, правильный, неправильный, но работает (переменная олдатаответ содержащая любое число символов теперь спокойно заменяет ключевое слово) [vba]
Код
'Запись в буфер обмена
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText AllDataOtvet .PutInClipboard End With
AllDataOtvet = "^c" ' = Left(rText, 255)
With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With
[/vba]
Спасибо
Gustav, Спс Может я не до конца правильно всё объяснил, но твой ответ в конечном ответе принес результат. ВБ по итогу ругалась на некоторые строки, но помогло всего лишь их удаление, по итогу получился вот такой код, правильный, неправильный, но работает (переменная олдатаответ содержащая любое число символов теперь спокойно заменяет ключевое слово) [vba]
Код
'Запись в буфер обмена
With GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") .SetText AllDataOtvet .PutInClipboard End With
AllDataOtvet = "^c" ' = Left(rText, 255)
With ActiveDocument.Content.Find .ClearFormatting .Text = "*Otvetchikifull*" With .Replacement .ClearFormatting .Text = AllDataOtvet End With .Execute Replace:=wdReplaceAll End With