Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Поиск строки с № и вставка последующего номера в конце документа (Word)

Ответить
Настройки темы
VBA - [решено] Поиск строки с № и вставка последующего номера в конце документа (Word)

Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую! Столкнулся с такой проблемой: существует документ Word, куда заносятся определенные данные...
Каждые новые данные начинаются строкой № затем идет цифровой значение (оно может быть до 9999)
затем идет несколько строк (не регламентировано) с описанием (не содержащие "№")
после чего через пустую строку начинается новый №
Может это можно как-то автоматизировать
а то не сообразить как это сделать
а в программировании я не разбираюсь...
Заранее благодарен

Отправлено: 15:50, 10-03-2011

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip SomeDocument.zip
(2.3 Kb, 8 просмотров)

sergey-pskov, Вам нужен макрос, который будет отслеживать последний номер и вставлять «его+1» по горячей клавише/кнопке на панели инструментов?

Если документ предназначен только для просмотра/печати (не для последующей машинной обработки) — достаточно соответствующего нумерованного стиля, в формате нумерации которого перед номером будет задан знак «№».

Последний раз редактировалось Iska, 10-03-2011 в 23:19. Причина: Прикрепил образец документа с таким стилем.

Это сообщение посчитали полезным следующие участники:

Отправлено: 23:02, 10-03-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вам нужен макрос, который будет отслеживать последний номер и вставлять «его+1» по горячей клавише/кнопке на панели инструментов?
Да! Мне нужен именно макрос... В моем случае "нумерованный список" не подходит...

Отправлено: 07:50, 11-03-2011 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip SomeDocument2.zip
(7.3 Kb, 6 просмотров)

sergey-pskov, цитирование осуществляется тэгом «quote».

Цитата sergey-pskov:
Мне нужен именно макрос... В моем случае "нумерованный список" не подходит... »
Ясно. Тогда пробуйте так:
читать дальше »
Код: Выделить весь код
Option Explicit

Sub AddNextNumber()
    Const boolReNumberNext As Boolean = True
    
    Dim arrLines() As String
    Dim i As Long
    
    Dim lngNextNumber As Long
    Dim retValue As String
    
    Dim objParagraph As Paragraph
    Dim objRange As Range
    
    
    Selection.Collapse Direction:=wdCollapseStart

    arrLines = Split(ActiveDocument.Range(ActiveDocument.Range.Start, Selection.Range.Start).Text, vbCr)
    
    lngNextNumber = 0
    
    For i = UBound(arrLines) To LBound(arrLines) Step -1
        If Left(arrLines(i), 1) = "№" Then
            lngNextNumber = CLng(Mid(arrLines(i), 2))
            
            Exit For
        End If
    Next
    
    retValue = InputBox("Введите очередной номер:", "Очередной номер", lngNextNumber + 1)
    
    If retValue <> "" Then
        With Selection
            .InsertParagraph
            .InsertAfter "№" & retValue
            
            .Collapse Direction:=wdCollapseEnd
            .InsertParagraph
            
            .Collapse Direction:=wdCollapseEnd
        End With
        
        If boolReNumberNext Then ' Перенумеровать все нижеследующие номера
            lngNextNumber = CLng(retValue) + 1
            
            For Each objParagraph In ActiveDocument.Range(Selection.Range.Start, ActiveDocument.Range.End).Paragraphs
                If objParagraph.Range.Characters.Item(1) = "№" Then
                    Set objRange = objParagraph.Range
                    
                    objRange.End = objRange.End - 1
                    objRange.Text = "№" & CStr(lngNextNumber)
                    
                    lngNextNumber = lngNextNumber + 1
                End If
            Next
        End If
    End If
End Sub

Прикреплён образец документа с данным макросом, внедрённой панелью инструментов и горячей клавишей.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:30, 11-03-2011 | #4


Новый участник


Сообщения: 5
Благодарности: 0

Профиль | Отправить PM | Цитировать


Благодарю! Большое спасибо!

Отправлено: 17:35, 11-03-2011 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - [решено] Поиск строки с № и вставка последующего номера в конце документа (Word)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] как в конце строки удалить пробел akrav Скриптовые языки администрирования Windows 11 08-10-2024 00:29
Вставка данных в документ word zvezda_t Вебмастеру 6 12-10-2010 14:03
[решено] поиск строки в WORD файле.... garanov AutoIt 3 19-03-2010 09:16
2003/XP/2000 - Word | Открытие документа Word в режиме чтения Qwe1 Microsoft Office (Word, Excel, Outlook и т.д.) 4 24-02-2010 16:41
CMD/BAT - [решено] Как убрать пробел в конце строки Tjmike Скриптовые языки администрирования Windows 2 11-02-2009 09:34




 
Переход