Shankrayya R Ответов: 1

Разделить документ Word на несколько документы Word (segragating документов Word в разных документах Word)


У меня есть мастер-документ word, который содержит образцы платежных ведомостей постранично, и я хочу разделить каждую страницу и сохранить ее как отдельный документ word на основе кода сотрудника, упомянутого на конкретной странице документа word.

Я написал код VBA для этого , но это не работает, пожалуйста, помогите мне в этом


Я получаю сообщение об ошибке и не получаю должного вывода.
Ошибка времени выполнения 4605 этот метод или свойство недоступны, так как текст не выбран

Что я уже пробовал:

Private Sub CommandButton1_Click()
Application.Documents.Open ("C:\Users\shankrayya.g\Desktop\Test\Payslip.docx")
Application.ScreenUpdating = False
Application.Browser.Target = wdBrowsePage
For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")
ActiveDocument.Bookmarks("\page").Range.Copy
Documents.Add
Selection.Paste
Selection.TypeBackspace

Dim SSS As String
SSS = ActiveDocument.Range.Paragraphs(20).Range.Text
MsgBox SSS
SSS = Replace(SSS, Chr(13), "")
SSS = "C:\Users\shankrayya.g\Desktop\Test\Output\file" & SSS & ".doc"
MsgBox SSS
ActiveDocument.SaveAs FileName:=SSS
Next i
ActiveDocument.Close savechanges:=wdDoNotSaveChanges

End Sub

Richard MacCutchan

Смысл совершенно ясен. Вы пытаетесь манипулировать каким-то текстом, но не выбрали ни одного. Используйте отладчик макросов, чтобы узнать, что происходит.

Shankrayya R

Хорошо. Спасибо за Ваш вклад, позвольте мне проверить это .. Но я не могу получить должный результат.. Не могли бы вы, пожалуйста, предложить по этому поводу.

1 Ответов

Рейтинг:
0

Patrice T

Цитата:
Ошибка времени выполнения 4605 этот метод или свойство недоступны, так как текст не выбран

Если вы внимательно прочтете сообщение об ошибке, оно расскажет вам, почему произошла ошибка. Скорее всего, он также сообщает вам строку, где происходит ошибка, скорее всего, он также предлагает открыть отладчик.

Совет: во время отладки кода продолжайте обновлять экран, чтобы увидеть, что происходит.
Private Sub CommandButton1_Click()
    Stop ' to switch to debugger mode
    Application.Documents.Open ("C:\Users\shankrayya.g\Desktop\Test\Payslip.docx")
    ' Make next line a comment while you are debugging code
    ' Application.ScreenUpdating = False
    Application.Browser.Target = wdBrowsePage
    For i = 1 To ActiveDocument.BuiltInDocumentProperties("Number of Pages")
        ActiveDocument.Bookmarks("\page").Range.Copy
        Documents.Add
        Selection.Paste
        Selection.TypeBackspace

        Dim SSS As String
        SSS = ActiveDocument.Range.Paragraphs(20).Range.Text
        MsgBox SSS
        SSS = Replace(SSS, Chr(13), "")
        SSS = "C:\Users\shankrayya.g\Desktop\Test\Output\file" & SSS & ".doc"
        MsgBox SSS
        ActiveDocument.SaveAs FileName:=SSS
    Next i
    ActiveDocument.Close savechanges:=wdDoNotSaveChanges

End Sub

Скорее всего также, что ActiveDocument переключается при добавлении нового документа.
-----
Научитесь правильно делать отступы в вашем коде, это покажет его структуру, и это поможет чтению и пониманию. Это также помогает выявлять структурные ошибки.
Стиль отступа - Википедия[^]
В excel я использую надстройку "Smart Indenter v3.5", давайте предположим, что она работает так же и с word.