Добрый день. Как сохранить открытый документ с другим именем, в другую папку расположенную в той же директории откуда открыт документ, и в нём выполнить макрос.
Например: документ с именем "Исходный" ("С:\оригиналы\"), сохранить как "Исходный (копия)" в папку "обработано"("С:\оригиналы\обработано\") и в "Исходный (копия)" выполнить макрос.
Исходный файл после создания копии нужно закрыть или нужно, чтобы он оставался открытым?
Да, можно закрыть.
Папка "обработано" должна быть создана (можно и с помощью макроса её создать).
Макрос
Sub Макрос()
Dim doc As Document
' Присваиваем активному ворд-файлу имя "doc".
Set doc = ActiveDocument
' Создание копии активного файла, при этом он закроется.
doc.SaveAs2 FileName:=doc.Path & "\обработано\Исходный (копия).docx", FileFormat:=wdFormatXMLDocument
' Здесь делаете действия с переменной "doc", которая представляет собой новый созданный файл.
' Вывод имени файла "doc" в View - Immediate Window.
Debug.Print doc.Name
End Sub
Переменную "doc" не обязательно использовать, можно и без неё обойтись:
Макрос
Sub Макрос()
' Создание копии активного файла, при этом он закроется.
ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & "\обработано\Исходный (копия).docx", FileFormat:=wdFormatXMLDocument
' Здесь делаете действия с новым созданным файлом, используя "ActiveDocument".
' Вывод имени активного файла в View - Immediate Window.
Debug.Print ActiveDocument.Name
End Sub
При сохранении файла нужно присваивать имя исходного (открытого) файла с добавлением (копия), а не конкретно "Исходный (копия)" Это для примера было.
Макрос
Sub Макрос()
Dim FN As String
'1. Формирование полного имени (путь + имя) для нового файла на основе полного имени активного файла.
' Вычленение имени файла.
FN = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1)
' Добавление к имени файла фразы "(копия").
FN = FN & " (копия)" & ".docx"
' Добавление пути.
FN = ActiveDocument.Path & "\" & FN
'2. Создание копии активного файла, при этом он закроется.
ActiveDocument.SaveAs2 FileName:=FN, FileFormat:=wdFormatXMLDocument
'3. Здесь делаете действия с новым созданным файлом, используя "ActiveDocument".
' Вывод имени активного файла в View - Immediate Window.
Debug.Print ActiveDocument.Name
End Sub
Спасибо, чуть-чуть подправил (добавил место сохранения & "обработано" & "\"), теперь то что нужно.