Заполнение ячеек таблицы макросом (Microsoft Word)
Когда вы работаете с таблицами в Word, вы можете захотеть заполнить различные ячейки в таблице заданным значением. Например, вы можете скопировать что-то в буфер обмена, а затем вставить содержимое буфера обмена в каждую ячейку таблицы. Следующий макрос сделает свое дело:
Sub PasteToCells() Dim TargetRange As Range Dim oTargCell As Cell If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells oTargCell.Range.Paste Next oTargCell TargetRange.Select End Sub
Макрос начинается с проверки, чтобы убедиться, что выделенный фрагмент включает некоторые ячейки. Если нет, то пользователь информируется, и макрос завершается.
Затем выбор сохраняется в переменной, чтобы его можно было выбрать (снова) в конце макроса. Без этого кода макрос оставил бы свернутую точку вставки в первой ячейке исходного выделения.
Настоящая суть макроса — в цикле For … Next. Он проходит по ячейкам в выделенном фрагменте и заменяет все, что есть, содержимым буфера обмена. Наконец, снова выбирается исходный выбор, и макрос завершается.
Вы, наверное, заметили, что в макросе есть также оператор On Error. Этот оператор в основном указывает Word игнорировать любые ошибки и перейти к следующему оператору. Ошибки, которые могут быть вызваны, включают запуск макроса без пустого буфера обмена или попытку вставить таблицу в ячейку таблицы. Word не будет выполнять ни одну из задач, но будет продолжать попытки, пока не будет выполнен со всеми ячейками в выделенном фрагменте.
Обратите внимание, что этот макрос заменяет все, что находится в выбранных ячейках, содержимым буфера обмена; все, что раньше было в камерах, теряется. Если вы хотите вместо этого добавить информацию в начало ячеек, не нарушая существующее содержимое ячейки, вы можете использовать этот слегка измененный макрос:
Sub PasteToCellsStart() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select End Sub
Последней модификацией будет создание макроса, который будет вставлять в конец содержимого ячеек. Вы могли подумать, что можете заменить wdCollapseStart на wdCollapseEnd в приведенном выше макросе, но это не работает должным образом в таблицах. Вместо этого вы должны заменить цикл For … Next в приведенном выше макросе. В следующем примере показана измененная версия макроса.
Sub PasteToCellsEnd() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range.Characters.Last PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select End Sub
_Примечание: _
Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
WordTips — ваш источник экономичного обучения работе с Microsoft Word.
(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (13157) применим к Microsoft Word 2007, 2010, 2013, 2016, 2019 и Word в Office 365. Вы можете найти версию этого совета для старый интерфейс меню Word здесь:
link: / word-Filling_Table_Cells_with_a_Macro [Заполнение ячеек таблицы макросом]
.