Как извлечь / удалить первое слово каждой страницы? - PullRequest
0 голосов
/ 15 февраля 2012

Я сделал mailmerge для создания динамических страниц с информацией о клиентах.

Затем я сделал (просматривая в сети) макрос, чтобы разделить файл результатов на несколько страниц, каждая страница была сохранена как один файл.

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

Пример: если у меня есть клиент с именем Stackoverflow, я хотел бы иметь файл с именем Facture_Stackoverflow.doc.

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

Вот мой «макрос расщепления», который в настоящее время именует файлы только с увеличенным идентификатором:

Sub DecouperDocument()
    Application.Browser.Target = wdBrowsePage

    For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")

        ActiveDocument.Bookmarks("\page").Range.Copy

        Documents.Add
        Selection.Paste

        Selection.TypeBackspace
        ChangeFileOpenDirectory "C:\test\"
        DocNum = DocNum + 1
        ActiveDocument.SaveAs FileName:="Facture_" & DocNum & ".doc"
        ActiveDocument.Close

        Application.Browser.Next
    Next i
    ActiveDocument.Close savechanges:=wdDoNotSaveChanges
End Sub

1 Ответ

0 голосов
/ 15 февраля 2012

Функция ниже позволит вам извлечь первое слово (и при необходимости удалить его) из документа Word.

Public Function GetFirstWord(Optional blnRemove As Boolean = True) As String

    Dim rng As Range
    Dim intCharCount As Integer
    Dim strWord As String

    With ThisDocument
        Set rng = .Characters(1)

        intCharCount = rng.EndOf(wdWord, wdMove)

        With .Range(0, intCharCount - 1)
            strWord = .Text
            If blnRemove Then
                .Delete
            End If
        End With
    End With

    GetFirstWord = strWord

End Function

Надеюсь, это поможет.

...