Word: Как сохранить документ (ворд-файл) с помощью VBA?

Автор lapin9126, 21 мая 2017, 08:33

lapin9126

Добрый день. Как сохранить открытый документ с другим именем, в другую папку расположенную в той же директории откуда открыт документ, и в нём выполнить макрос.
Например: документ с именем "Исходный" ("С:\оригиналы\"), сохранить как "Исходный (копия)" в папку "обработано"("С:\оригиналы\обработано\") и  в  "Исходный (копия)" выполнить макрос.

Администратор

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


Администратор

Папка "обработано" должна быть создана (можно и с помощью макроса её создать).

Макрос
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
[свернуть]

lapin9126

При сохранении файла нужно присваивать имя исходного (открытого) файла с добавлением (копия), а не конкретно "Исходный (копия)" Это для примера было.

Администратор

Макрос
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
[свернуть]

lapin9126

Спасибо, чуть-чуть подправил (добавил место сохранения  & "обработано" & "\"), теперь то что нужно.