Добрый день, подскажите, необходимо взять шаблон Word, произвести в нем определенные изменения и сохранить измененный файл, таких операций надо сделать определенное множество [vba]
Код
Sub proccesingWord() Dim myWord As New Word.Application Dim myDocument As Word.Document Dim numer As Integer
For numer = 3 To Cells(Rows.Count, 4).End(xlUp).Row Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") myDocument.Content.Find.Execute "#ФАМИЛИЯ#", False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 myDocument.SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") myDocument.Close Next
End Sub
[/vba] Данный код в принципе выполняет задачу, однако процесс получается слишком долгим, т.к. шаблон каждый раз открывается, потом закрывается, есть ли возможность оптимизировать работу. Спасибо
Добрый день, подскажите, необходимо взять шаблон Word, произвести в нем определенные изменения и сохранить измененный файл, таких операций надо сделать определенное множество [vba]
Код
Sub proccesingWord() Dim myWord As New Word.Application Dim myDocument As Word.Document Dim numer As Integer
For numer = 3 To Cells(Rows.Count, 4).End(xlUp).Row Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") myDocument.Content.Find.Execute "#ФАМИЛИЯ#", False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 myDocument.SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") myDocument.Close Next
End Sub
[/vba] Данный код в принципе выполняет задачу, однако процесс получается слишком долгим, т.к. шаблон каждый раз открывается, потом закрывается, есть ли возможность оптимизировать работу. СпасибоSashagor1982
Дык один раз откройте и один закройте. И сам Ворд, кстати, тоже закрыть неплохо бы в конце
[vba]
Код
Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") For numer = 3 To Cells(Rows.Count, 1).End(xlUp).Row myDocument.Content.Find.Execute "#ФАМИЛИЯ#", False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 myDocument.SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") myDocument.Undo Next myDocument.Close myWord.Quit
[/vba]
Или без Ундо [vba]
Код
Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") With myDocument For numer = 3 To Cells(Rows.Count, 1).End(xlUp).Row If numer = 3 Then t_ = "#ФАМИЛИЯ#" Else t_ = Cells(numer - 1, 1).Value End If .Content.Find.Execute t_, False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 .SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") Next End With myDocument.Close myWord.Quit
[/vba]
Дык один раз откройте и один закройте. И сам Ворд, кстати, тоже закрыть неплохо бы в конце
[vba]
Код
Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") For numer = 3 To Cells(Rows.Count, 1).End(xlUp).Row myDocument.Content.Find.Execute "#ФАМИЛИЯ#", False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 myDocument.SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") myDocument.Undo Next myDocument.Close myWord.Quit
[/vba]
Или без Ундо [vba]
Код
Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc") With myDocument For numer = 3 To Cells(Rows.Count, 1).End(xlUp).Row If numer = 3 Then t_ = "#ФАМИЛИЯ#" Else t_ = Cells(numer - 1, 1).Value End If .Content.Find.Execute t_, False, False, False, False, False, True, 1, False, Cells(numer, 1).Value, 2 .SaveAs2 ("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Созданное\" + Cells(numer, 1).Value + ".doc") Next End With myDocument.Close myWord.Quit
_Boroda_, Добрый день, подскажите, Undo отменяет последнее действие, однако каким образом можно вернуть изначальный myDocument? Вот пример моего кода [vba]
Код
Sub proccesingWord() Dim myWord As New Word.Application Dim myDocument As Word.Document Dim numer As Integer Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc")
For numer = 3 To 10 'Cells(Rows.Count, 4).End(xlUp).Row
_Boroda_, Добрый день, подскажите, Undo отменяет последнее действие, однако каким образом можно вернуть изначальный myDocument? Вот пример моего кода [vba]
Код
Sub proccesingWord() Dim myWord As New Word.Application Dim myDocument As Word.Document Dim numer As Integer Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.doc")
For numer = 3 To 10 'Cells(Rows.Count, 4).End(xlUp).Row
Sashagor1982, а если использовать шаблон? типа: Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.dotx") Undo в этом случае не нужно
Sashagor1982, а если использовать шаблон? типа: Set myDocument = myWord.Documents.Open("C:\Users\sasha\OneDrive\Рабочий стол\Послужные\Послужной.dotx") Undo в этом случае не нужноnilem
Яндекс.Деньги 4100159601573
Сообщение отредактировал nilem - Воскресенье, 10.04.2022, 13:24
Set myDocument = myWord.Documents.Open("...\Послужной.dotx") - это и будет клон (копия) файла Послужной.dotx. Сам файл-шаблон (dotx) при этом останется неизменным. Так работают шаблоны в Екселе. Наверное, и в Ворде так же.
Set myDocument = myWord.Documents.Open("...\Послужной.dotx") - это и будет клон (копия) файла Послужной.dotx. Сам файл-шаблон (dotx) при этом останется неизменным. Так работают шаблоны в Екселе. Наверное, и в Ворде так же.nilem