Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Ограничение длинны строки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Ограничение длинны строки
Skorpika Дата: Четверг, 15.01.2015, 18:41 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003 и 13
Друзья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 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), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично.
Как это счастье обойти?

Поможет ли буфер обмена?


Сообщение отредактировал Skorpika - Четверг, 15.01.2015, 20:21
 
Ответить
СообщениеДрузья, подскажите. при составлении формы в переменную заносятся данные (это данные на примерно 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), но разбивать данные тоскливо, использовать текстбокс в активном листе проблематично.
Как это счастье обойти?

Поможет ли буфер обмена?

Автор - Skorpika
Дата добавления - 15.01.2015 в 18:41
Gustav Дата: Пятница, 16.01.2015, 10:17 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2793
Репутация: 1160 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Поможет ли буфер обмена?

Определенно поможет! Алгоритм такой. Перед поиском и заменой загоняем заменяющий текст в буфер обмена и далее в качестве Replacement.Text прописываем специальное двухсимвольное значение ^c ( http://gregmaxey.mvps.org/word_tip_pages/find_replace_long_string.html )
[vba]
Код
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 & "КОНЕЦ"
        
      Call SetClipboardText(rText)
      AllDataOtvet = "^c" ' = Left(rText, 255)
        
      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
[/vba]


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Пятница, 16.01.2015, 10:31
 
Ответить
Сообщение
Поможет ли буфер обмена?

Определенно поможет! Алгоритм такой. Перед поиском и заменой загоняем заменяющий текст в буфер обмена и далее в качестве Replacement.Text прописываем специальное двухсимвольное значение ^c ( http://gregmaxey.mvps.org/word_tip_pages/find_replace_long_string.html )
[vba]
Код
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 & "КОНЕЦ"
        
      Call SetClipboardText(rText)
      AllDataOtvet = "^c" ' = Left(rText, 255)
        
      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
[/vba]

Автор - Gustav
Дата добавления - 16.01.2015 в 10:17
Skorpika Дата: Пятница, 16.01.2015, 21:15 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 32
Репутация: 0 ±
Замечаний: 20% ±

Excel 2003 и 13
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
[/vba]

Спасибо

Автор - Skorpika
Дата добавления - 16.01.2015 в 21:15
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!