Почему не получается объединить ячейки в ворде
Регистрация: 24.11.2015
Сообщений: 1
Не получается объединить ячейки таблицы одного столбца
Добрый вечер. Бьюсь уже очень долго и ничего пока не выходит. Помогите, пожалуйста, исправить макрос для MS Word 2010 чтобы он мог объединять ячейки по первому столбцу. Алгоритм такой: В таблице в первом столбце есть несколько заполненных ячеек, а за ними пустые ячейки (количество всегда разное). Необходимо объединить каждую заполненную ячейку в столбце с пустыми ячейками следующими за ней. И так далее. Но нужно оставить без объединения ячейки заполненные. Пример файла прилагаю.
Пока получилось объединить первую заполненную ячейку с ячейками пустыми, которые идут за заполненной. Однако при дальнейшем выполнении цикла выскакивает ошибка, что такого семейства не существует. Понимаю, что дело в условии, но не могу его сделать правильным. Пример макроса нашел в сети, а исправит не хватает знаний. Помогите!
Вот макрос
Sub MergeRowsByColumns() Dim oTbl As Table, iStart As Long, iEnd As Long, i#, j#, k#, iRowsCnt Set oTbl = Selection.Tables(1) iRowsCnt = oTbl.Rows.Count Application.ScreenUpdating = False Do: i = i + 1 'Ищем пустую ячейку в первом столбце. Запоминаем номер предыдущей строки If Len(oTbl.Cell(i + 1, 1).Range.Text) 2 Or j = iRowsCnt Then iEnd = IIf(j = iRowsCnt, j, oTbl.Cell(j, 1).Previous.RowIndex) 'Объединяем все строки по столбцу ActiveDocument.Range(oTbl.Cell(iStart, k).Range.Start, oTbl.Cell(iEnd, k).Range.End).Select Selection.Cells.Merge 'Заменяем знак абзаца на пробел Selection.Find.Execute findtext:="^0013", replacewith:="^0032", Replace:=wdReplaceAll 'пересчитываем количество строк после объединения iRowsCnt = iRowsCnt - (iEnd - iStart) Exit For End If Next j End If Loop While i <> iRowsCnt Application.ScreenUpdating = True End Sub
| ПК.docx (18.9 Кб, 1 просмотров) |
Как объединить и разделить ячейки в таблице в Word
При оформлении текстовых документов часто приходится использовать таблицы. С их помощью можно красиво оформить списки, а также другие данные, которые плохо воспринимаются в виде текста.
В этом материале вы узнаете, как объединить или разделить ячейки в таблице Word. Статья будет актуальной для современных версий Word. Включая Word 2007, 2010, 2013, 2016 и 2019.
Объединять ячейки в таблице в текстовом редакторе Word можно несколькими способами. Самый простой вариант – это контекстное меню. Чтобы воспользоваться этим способом выделите нужные ячейки в таблице, кликните по ним правой кнопкой мышки и в открывшемся окне выберите « Объединить ячейки ».

В результате выбранные вами ячейки таблицы будут объединены в одну.

Альтернативный вариант – использование раздела « Макет ». Для объединения ячеек нужно выделить их мышкой перейти на вкладку « Макет » и нажать на кнопку « Объединить ячейки ».

Также на вкладке « Макет » есть инструмент « Ластик ».

С его помощью можно стирать линии в таблицы и таким образом объединять ячейки.
Обратное действие выполняется аналогично. Например, разделение можно выполнить с помощью контекстного меню. Для этого установите курсор в объединенную ячейку, кликните по ней правой кнопкой мышки и выберите вариант « Разделить ячейки ». После этого таблица вернется в свое исходное состояние.

Если вам нужно разделить ячейку не так, как она была разделена изначально, то для этого нужно использовать кнопку « Разделить ячейки » на вкладке « Макет ». После нажатия на эту кнопку появится окно « Разбиение ячеек » в котором можно указать число столбцов и строк, на которые нужно разбить выбранную ячейку.

Также можно использовать инструмент « Нарисовать таблицу » на вкладке « Макет ».

С его помощью можно нарисовать дополнительные линии в любом месте таблицы и таким образом разделить ячейки.
- Как удалить таблицу в Word
- Как перевернуть таблицу в Word
- Как добавить строку в таблицу в Word
- Как объединить таблицы в Word
- Как сделать невидимую таблицу в Word
Создатель сайта comp-security.net, автор более 2000 статей о ремонте компьютеров, работе с программами, настройке операционных систем.
Остались вопросы?
Задайте вопрос в комментариях под статьей или на странице «Задать вопрос» и вы обязательно получите ответ.
Почему не получается объединить ячейки в ворде
есть com word,стоки в таблицу добавлять могу, но не могу добавить строки (ячейки) только в одну колонку, а другие оставлять без изменений, есть идея добавлять строку и не нужные колонки объеденять. как это делается через ком, кто знает?
На фига ветки плодить.
я знаю, как это делаится чериз макрозы
(2) с этим вообще не работал, долго осваивать?
(3) пара кликов
(4) расскажи пжлста
блин неужели не формируете из 1с серьезные Word документы?
(5) макросы — запись макроса
макросы — изменить
(7) а код какой по объединению?
(8) то, что ты увидишь в записи макроса. Вот этот код адаптируешь под ком.
(9) а как найти именно этот макрос
кнопка изменить к тому же не активна
(10) ну ты ваще 🙂
перед записью можно задать имя макроса, задай по имени и найдешь потом.
так какой код то? (4) (2)
(13) такой код — который получился при записи макроса «имя_макроса»
(14) да я не о том, как вообще выглядит программный код макроса объеденяющий ячейки?
(15) запишешь — узнаешь
(15) вот например код макроса который пишет твой ник:
я задал перед записью ему-макросу имя Domanoff26, потом по имени нашел его, вытащил код скопировал и вставил сюда:
Sub Domanoff26()
‘
‘ Domanoff26 Макрос
‘
‘
Application.Keyboard (1033)
Selection.TypeText Text:=»domanoff26″
End Sub
а кто знает как через ком определить набор ячеек,Cell(4,1) — это одна ячейка, а несколько?
макрос для выделеных ячеек вот такой Selection.Cells.Merge, но как получитьь этот Selection для ком?
(18) Это — не одна ячейка, а диапазон из одной ячейки.
(20) вот как его для ком задать?
(22) fа номера ячеек то куда вставлять? ну те есть сам диапазон как проставлять?
(23) ты думать будешь? или хотя бы читать
я понял что range , только для екселя вижу синтаксис в сети, для ворда не понимаю как начальную и конечную ячейку задавать
(25) логично было б подумать, что диапазон задаётся для вордовской таблицы?
(26) это понятно я не могу найти для вордовской
(27) а для таблицы нету в этой ссылке ничего
(29) Range в Word задаётся начальной и конечной позициями.
Их извлекаете из Cell(i,j) как Start и End.
Ну а как получили Range (назовём его r) — то и говорите ему
r.Cells.Merge();
Docum.Range(табл.Cell(1,1).Range.Start, табл.Cell(1,2).Range.End) вот так? (30)
это диапазон.
(32) Наверное (если всему всё правильно присвоено).
и к нему теперь — .Cells.Merge()
(33) при определние диапазона пишет ошибку на cell
(34) Ну, значит, не всё всему правильно присвоено.
(Оно же не просто «ошибку на cell» пишет, оно пишет и в чём состоит ошибка).
(35) спасибо
а как скопировать строку или диапазон ячеек например, никто не подскажет?
записать макрос и посмотреть, как оно это делает?
(38) Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.MoveUp Unit:=wdLine, Count:=2
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=20, Extend:=wdExtend
Selection.InsertRowsBelow 4
Selection.Paste
не очень понимаю. как это на коме будет написано
(39) копирование не вижу, вставку вижу
(40) а как копировать чтоб в макросе отразилась, я контрл ц нажимал и эта операция не отразилась(
вообще не понимаю как получить этот Selection в коме, может тут надо использовать Range?
Word = Новый COMОбъект(«Word.Application»);
Text = Word.selection;
а дальше
Text.EndKey();
Text.Paste();
и тп.
Selection.MoveRight Unit:=wdCharacter, Count:=2, Extend:=wdExtend
Selection.EscapeKey
Selection.Cells.Merge
(43) сдесьбудет весь объект как selection? мне нужна только часть таблицы
(44) а в КОМе как это все выглядит?
ну подскажите как в коме все таки строчку скопировать
(47) Word — Сервис — Редактор Visual Basic.
F2 — и смотришь значения констант (например, wdLine — это число 5).
Вызовы методов. В отличие от VBA — параметры надо в скобки брать. И — нет именованных параметров, то есть, Unit:= — не надо писать.
Порядок параметров и их количество — смотришь, к примеру, в MSDN. Или во встроенной справке Word Basic.
(48) не могу найти этот selection
табл.Rows(2).range().copy(); — вот это вроде работает, а как ее правильно вставить?
(49) Метод Select использовать — он вернёт Selection. Дальше над ней можно поиздеваться (особенно если ячейки по столбцам объединять надо).
(50) диап = Docum.Range(табл.Cell(3,1).Range.Start, табл.Cell(3,4).Range.End);
//Docum.Range(табл.Cell(1,1).Range.Start, табл.Cell(1,4).Range.End);
// табл.Rows(13).range().InsertAfter(диап);
табл.range().InsertAfter(диап);
почему вот это всталяет не сам диапазон а текст диапазона в последнюю ячейку, что то забыл?
(51) Потому что InsertAfter «inserts the specified _text_ at the end of a range or selection»?
(52)согласен, какой для ячеек метод ? не могу найти
(53) Поясни задачу. Если я правильно понял — то есть таблица Word, в ней надо объединить несколько ячеек. Но сейчас почему-то вопросы по копированию. Так что нужно — копировать или объединять?
(54) объеденять научилс\я, хочу понять как копировать
Docum.Range(табл.Cell(3,1).Range.Start, табл.Cell(3,4).Range.End).select() — Selection не получается, в отладчике неопределено
вообще хочу копировать блоки таблиц и вставлять в определенные места
(57) Простейший вариант — через буфер обмена.
Например, в твоей таблице скопировать ячейку (3,3) в ячейку (3,4):
Docum.Range(табл.Cell(3,3).Range.Start, табл.Cell(3,3).Range.End).Copy();
Docum.Range(табл.Cell(3,4).Range.Start, табл.Cell(3,4).Range.End).Paste();
(58) пара минут назад до самого дошло но спсаибо
(58) а вот заполнение только каждую ячейку отдельно? т е по по cell(номерстроки,номерколонки) или мложно как нить более удобно?
я могу в созданную ячейку добавлять параметр Variables, чтоб потом через Docum.Variables.Item(имяпараметра).Value заполнять таблицу
(60) А чем плохо пройти циклом — и записать нужные значения?
(61) В принципе, у Cell есть метод Formula — можно не только переменную вставить.
(62) а не знаешь, я вот ввожу строку с символами.пс, а в ворде оно отображается как в одну строку просто ссимволом
квадратика, как его реально на новую строку переносить?
(63) Начать новый абзац — это InsertParagraph
Начать новую строку — это InsertBreak(11).
Docum.Range(табл.Cell(1,1).Range.Start, табл.Cell(1,4).Range.End); выделяет я так понял ячейки идя слева на право и вниз. а как выделить две строки одно колонки например в диапазон? (54)
(66) Воспользоваться методом Merge объекта Cell. Например:
табл.Cell(1,1).Merge(табл.Cell(2,3));
Параметр — ячейка, по какую объединять.
Объединяем ячейки таблицы в Microsoft Word
Мы уже неоднократно писали о возможностях текстового редактора Microsoft Word в целом, и в частности о том, как в нем создавать и изменять таблицы. Инструментов для этих целей в программе имеется довольно много, все они удобно реализованы и позволяют с легкостью справляться со всеми задачами, которые могут выдвигать перед собой большинство пользователей. Одной из таковых является объединение ячеек, и сегодня мы расскажем о ее решении.
Объединение ячеек в Ворде
При создании таблицы в Microsoft Word на ленте (панель управления) появляется группа вкладок «Работа с таблицами». В ее состав входит подвкладка «Макет», инструментарием которой нам с вами и нужно воспользоваться для того, чтобы объединить ячейки.
- Выделите с помощью мышки ячейки в таблице, которые необходимо объединить. Это могут быть как элементы одной строки или столбца, так и диапазон таковых.

- В появившемся разделе «Работа с таблицами» перейдите во вкладку «Макет» и в группе «Объединение» выберите пункт «Объединить ячейки».

- Выделенная вами часть таблицы будет объединена.

Это же действие можно проделать не только с помощью инструментов, представленных во вкладке «Макет» группы «Работа с таблицами», но и через контекстное меню, вызываемое нажатием правой кнопки мышки (ПКМ) на предварительно выделенных ячейках. Выбирать нужно одноименный показанному выше пункт — «Объединить ячейки».
Разделение ячеек
Узнав о том, как объединить ячейки созданной в Ворде таблицы, нелишним также будет иметь представление и о том, как выполнить противоположную процедуру – их разделение. Алгоритм действий в данном случае практически такой же.
- Выделите с помощью мышки ячейку (или ячейки), которую вы хотите разбить на несколько. В нашем примере это пара, объединенная в предыдущей части статьи.

- Во вкладке «Макет», в уже знакомой нам с вами группе инструментов «Объединение», выберите пункт «Разделить ячейки».

- В небольшом окне, которое перед вами появится, задайте желаемое число строк и/или столбцов в выделенном вами фрагменте таблицы.
Примечание: Даже одну ячейку можно разбить на несколько частей и по горизонтали (строки), и по вертикали (столбцы).

Ячейки будут разделены согласно заданным вами параметрам.


Несложно догадаться, что разделение ячеек, как и рассмотренное нами выше объединение, можно выполнить и через контекстное меню. Главное, предварительно выделить нужный диапазон.
Читайте также: Как в Ворде добавить строку в таблицу
Заключение
Из этой небольшой статьи вы узнали немного больше о работе с таблицами в Microsoft Word, а конкретно о том, как объединять ячейки и/или разделять их.