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

Вход

Регистрация

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

 

= Мир MS Excel/Вставка таблицы из Word в Excel с удалением неп. символов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Вставка таблицы из Word в Excel с удалением неп. символов
aequit Дата: Суббота, 07.03.2015, 13:20 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте! Необходимо из Word вставлять таблицу в Excel, при этом удаляя все символы перевода строки.
Нашел код, который работает, но имеет существенный недостаток - он очищает все непечатные символы и слова сливаются. Как мне кажется, в строчке [vba]
Код
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
[/vba] вместо функции Clean лучше использовать Substitute, но все попытки её туда вставить ни к чему не привели, только ошибки (
Как сделать замену непечатных символов на пробелы?
К сообщению приложен файл: TableFromWord.xlsm (15.9 Kb)


Сообщение отредактировал aequit - Суббота, 07.03.2015, 13:26
 
Ответить
СообщениеЗдравствуйте! Необходимо из Word вставлять таблицу в Excel, при этом удаляя все символы перевода строки.
Нашел код, который работает, но имеет существенный недостаток - он очищает все непечатные символы и слова сливаются. Как мне кажется, в строчке [vba]
Код
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
[/vba] вместо функции Clean лучше использовать Substitute, но все попытки её туда вставить ни к чему не привели, только ошибки (
Как сделать замену непечатных символов на пробелы?

Автор - aequit
Дата добавления - 07.03.2015 в 13:20
Manyasha Дата: Понедельник, 09.03.2015, 12:37 | Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 901 ±
Замечаний: 0% ±

Excel 2010, 2016
aequit, здравствуйте. Если еще нужно, то попробуйте так:
[vba]
Код
Cells(iRow, iCol) = Replace(.cell(iRow, iCol).Range.Text, Chr(10), " ")
[/vba]Chr(10) - символ перевода строки.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеaequit, здравствуйте. Если еще нужно, то попробуйте так:
[vba]
Код
Cells(iRow, iCol) = Replace(.cell(iRow, iCol).Range.Text, Chr(10), " ")
[/vba]Chr(10) - символ перевода строки.

Автор - Manyasha
Дата добавления - 09.03.2015 в 12:37
aequit Дата: Вторник, 10.03.2015, 20:59 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Спасибо ,почти то, что нужно. Осталось разобраться с появившимися вопросиками в квадратах на месте непечатных символов.
 
Ответить
СообщениеСпасибо ,почти то, что нужно. Осталось разобраться с появившимися вопросиками в квадратах на месте непечатных символов.

Автор - aequit
Дата добавления - 10.03.2015 в 20:59
Gustav Дата: Среда, 11.03.2015, 00:24 | Сообщение № 4
Группа: Админы
Ранг: Участник клуба
Сообщений: 2812
Репутация: 1185 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
Ну так и вложите результат подсказки в первоначальный Clean:
[vba]
Код
Cells(iRow, iCol) = WorksheetFunction.Clean( Replace(.cell(iRow, iCol).Range.Text, Chr(10), " ") )
[/vba]
и будет вам счастье :)

P.S. Возможно даже лучше будет сделать вот так, обрабатывая еще на всякий случай возврат каретки и табуляцию:
[vba]
Код
    Cells(iRow, iCol) = WorksheetFunction.Clean( _
                           Replace( _
                           Replace( _
                           Replace( _
                           .cell(iRow, iCol).Range.text _
                           , Chr(10), " ") _
                           , Chr(13), " ") _
                           , Chr(9), " ") _
                           )
[/vba]
Или то же самое, но более цивилизованно, используя штатные константы и добавив сжатие пробелов:
[vba]
Код
    Cells(iRow, iCol) = WorksheetFunction.Trim( _
                         WorksheetFunction.Clean( _
                         Replace( _
                         Replace( _
                         Replace( _
                         .cell(iRow, iCol).Range.text _
                         , vbLf, " ") _
                         , vbCr, " ") _
                         , vbTab, " ") _
                         ))
[/vba]


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

Сообщение отредактировал Gustav - Среда, 11.03.2015, 00:44
 
Ответить
СообщениеНу так и вложите результат подсказки в первоначальный Clean:
[vba]
Код
Cells(iRow, iCol) = WorksheetFunction.Clean( Replace(.cell(iRow, iCol).Range.Text, Chr(10), " ") )
[/vba]
и будет вам счастье :)

P.S. Возможно даже лучше будет сделать вот так, обрабатывая еще на всякий случай возврат каретки и табуляцию:
[vba]
Код
    Cells(iRow, iCol) = WorksheetFunction.Clean( _
                           Replace( _
                           Replace( _
                           Replace( _
                           .cell(iRow, iCol).Range.text _
                           , Chr(10), " ") _
                           , Chr(13), " ") _
                           , Chr(9), " ") _
                           )
[/vba]
Или то же самое, но более цивилизованно, используя штатные константы и добавив сжатие пробелов:
[vba]
Код
    Cells(iRow, iCol) = WorksheetFunction.Trim( _
                         WorksheetFunction.Clean( _
                         Replace( _
                         Replace( _
                         Replace( _
                         .cell(iRow, iCol).Range.text _
                         , vbLf, " ") _
                         , vbCr, " ") _
                         , vbTab, " ") _
                         ))
[/vba]

Автор - Gustav
Дата добавления - 11.03.2015 в 00:24
aequit Дата: Пятница, 13.03.2015, 15:14 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 29
Репутация: 2 ±
Замечаний: 0% ±

Excel 2010
Gustav,
Спасибо hands , первый вариант не отрабатывает случай, если в ячейке исходной таблицы 0, потом "ENTER", потом, например, 1000. Получается в итоге 01000 слитно.
Второй и третий вариант идеально, то, что нужно для импорта таблиц из Word. Каждая ячейка Wordовской таблицы переносится в свою ячейку Excelевской. Если, конечно, не нужно "ENTER" из Wordовской таблицы заменять на переносы строки. Мне как раз не нужно.
 
Ответить
СообщениеGustav,
Спасибо hands , первый вариант не отрабатывает случай, если в ячейке исходной таблицы 0, потом "ENTER", потом, например, 1000. Получается в итоге 01000 слитно.
Второй и третий вариант идеально, то, что нужно для импорта таблиц из Word. Каждая ячейка Wordовской таблицы переносится в свою ячейку Excelевской. Если, конечно, не нужно "ENTER" из Wordовской таблицы заменять на переносы строки. Мне как раз не нужно.

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

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