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

lapin9126

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

Оффлайн Администратор

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

lapin9126

  • Гость
Да, можно закрыть.

Оффлайн Администратор

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

Макрос
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

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Переменную "doc" не обязательно использовать, можно и без неё обойтись:

Макрос
Sub Макрос()
    ' Создание копии активного файла, при этом он закроется.
    ActiveDocument.SaveAs2 FileName:=ActiveDocument.Path & "\обработано\Исходный (копия).docx", FileFormat:=wdFormatXMLDocument
    ' Здесь делаете действия с новым созданным файлом, используя "ActiveDocument".
    ' Вывод имени активного файла в View - Immediate Window.
    Debug.Print ActiveDocument.Name
End Sub

lapin9126

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

Оффлайн Администратор

  • Administrator
  • Сообщений: 2162
Макрос
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

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