1

Тема: вставка одного и того же текста в начале каждой ячейки

Здравствуйте.
Имеется огромная таблица с данными (фрагмент)
0219-0010
0020
0030
0050
0080
0090
0260-0000
0030
0050
0261-0000
0020
0040
Номера вида хххх-хххх, но в исходнике каждые первые 4 цифры (до дефиса) указывались только один раз, в последующих строках они подразумевались, а указывались только цифры после дефиса. Надо преобразовать в полные номера, т. е.
0219-0010
0219-0020
...
0219-0090
0260-0000
0260-0030
0260-0050
0261-0000
0261-0020
0261-0040
(выделено жирным для наглядности, в файле выделения нет)
Т. е. в той строке, где 8 цифр, скопировать первые четыре цифры (до дефиса) и сам дефис, в последующих строках (тех, где только по 4 цифры) вставить это спереди, не замещая имеющиеся цифры (до следующей 8-значной строки). Гуглением не нашел, как можно вставить один и тот же текст сразу в несколько ячеек и без замены имеющегося там текста.
Ну и совсем хорошо, если можно научить макрос находить 8-значную ячейку, брать там первые 4 цифры с дефисом и вставлять в ниже расположенные 4-значные ячейки. Затем следующую 8-значную - аналогично и т. д.

2

Re: вставка одного и того же текста в начале каждой ячейки

Это так не работает. Многое зависит от того, какие у вас таблицы (есть ли объединённые ячейки, в каком столбце располагаются данные цифры, какого вида может быть иной текст в данном столбце).
Сбросьте документ для примера.

Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

3

Re: вставка одного и того же текста в начале каждой ячейки

Сейчас таблица состоит из 4-х столбцов,  вышеуказанные номера - в первом и третьем. Однако, ее можно разбить на части по два столбца (это в дальнейшем все равно потребуется). Тогда получится первый столбец с указанными цифрами и второй - с иными, не требующими изменений.
Объединенных ячеек нет, иного текста в этом столбце нет (не должно быть, а если и встретится - будет исправлено перед тем, как...).
Фрагмент во вложении.

Post's attachments

пример номеров.docx 15.58 Кб, 2 скачиваний с 2018-05-07 

You don't have the permssions to download the attachments of this post.

4

Re: вставка одного и того же текста в начале каждой ячейки

Сработает на всех таблицах документа (на данных в первой и третьей колоннах)

Sub AddNumber()
'vbadevelope@yandex.ru для wordexpert.ru
'Добавляем номера из ячейки в последующие ячейки
Dim oDoc As Document
Set oDoc = ActiveDocument
Dim oTable As Table
Application.ScreenUpdating = False
For Each oTable In oDoc.Tables
    Call ColumnsAddNumber(oTable.Columns(1))
    Call ColumnsAddNumber(oTable.Columns(3))
Next oTable
Application.ScreenUpdating = True
End Sub
Private Sub ColumnsAddNumber(ByRef oColumn As Column)
Dim oCell As Cell
Dim sCopy As String
For Each oCell In oColumn.Cells
    If Len(oCell.Range.Text) >= 8 Then
        sCopy = Left(oCell.Range.Text, 4)
    Else
        oCell.Range.Select
        Selection.Collapse Direction:=wdCollapseStart
        Selection.Range.Text = sCopy & Chr(45)
    End If
Next oCell
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

5

Re: вставка одного и того же текста в начале каждой ячейки

Спасибо!
Макрос периодически ругался так:
"Run-time error '5992': Отсутствует доступ к отдельным столбцам, поскольку ячейки таблицы имеют разную ширину"
Пытался ровнять ширину столбцов, ставить курсор на другую таблицу перед запуском макроса - не помогло. Изворачивался либо разбиением таблицы на две, либо вставкой новых пустых строк правильной ширины и копированием в них данных из "неправильных" строк.