Вставка таблицы из 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, но все попытки её туда вставить ни к чему не привели, только ошибки ( Как сделать замену непечатных символов на пробелы?
Здравствуйте! Необходимо из Word вставлять таблицу в Excel, при этом удаляя все символы перевода строки. Нашел код, который работает, но имеет существенный недостаток - он очищает все непечатные символы и слова сливаются. Как мне кажется, в строчке [vba]Код
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
[/vba] вместо функции Clean лучше использовать Substitute, но все попытки её туда вставить ни к чему не привели, только ошибки ( Как сделать замену непечатных символов на пробелы? aequit
Сообщение отредактировал 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) - символ перевода строки.
aequit , здравствуйте. Если еще нужно, то попробуйте так: [vba]Код
Cells(iRow, iCol) = Replace(.cell(iRow, iCol).Range.Text, Chr(10), " ")
[/vba]Chr(10) - символ перевода строки.Manyasha
ЯД: 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
Ответить
Сообщение Спасибо ,почти то, что нужно. Осталось разобраться с появившимися вопросиками в квадратах на месте непечатных символов. Автор - 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]
Ну так и вложите результат подсказки в первоначальный 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
МОИ: Ник , 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 , Спасибо , первый вариант не отрабатывает случай, если в ячейке исходной таблицы 0, потом "ENTER", потом, например, 1000. Получается в итоге 01000 слитно. Второй и третий вариант идеально, то, что нужно для импорта таблиц из Word. Каждая ячейка Wordовской таблицы переносится в свою ячейку Excelевской. Если, конечно, не нужно "ENTER" из Wordовской таблицы заменять на переносы строки. Мне как раз не нужно.
Gustav , Спасибо , первый вариант не отрабатывает случай, если в ячейке исходной таблицы 0, потом "ENTER", потом, например, 1000. Получается в итоге 01000 слитно. Второй и третий вариант идеально, то, что нужно для импорта таблиц из Word. Каждая ячейка Wordовской таблицы переносится в свою ячейку Excelевской. Если, конечно, не нужно "ENTER" из Wordовской таблицы заменять на переносы строки. Мне как раз не нужно.aequit
Ответить
Сообщение Gustav , Спасибо , первый вариант не отрабатывает случай, если в ячейке исходной таблицы 0, потом "ENTER", потом, например, 1000. Получается в итоге 01000 слитно. Второй и третий вариант идеально, то, что нужно для импорта таблиц из Word. Каждая ячейка Wordовской таблицы переносится в свою ячейку Excelевской. Если, конечно, не нужно "ENTER" из Wordовской таблицы заменять на переносы строки. Мне как раз не нужно.Автор - aequit Дата добавления - 13.03.2015 в 15:14