VBA Макросы: Создание шаблона word из ms-dos.

Автор svil, 10 декабря 2018, 22:17

svil

Задание. Загрузка текста MS DOS и предоставление его пользователю для редактирования, форматирования и сохранения в качестве шаблона.

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

Макрос отображает диалог для выбора txt-файла, макрос открывает выбранный файл и сохраняет его как dotm-файл.
Файл сохраняется по тому же пути, где находится выбранный txt-файл.

Макрос
Sub Макрос()
   
    Dim doc As Document
    Dim FN As String, path As String
   
   
    '1. Юзер выбирает файл. Полное имя файла (путь + имя) запишется в переменную 'FN'.
    With Application.FileDialog(msoFileDialogFilePicker)
        ' Чтобы юзер мог выбрать только один файл, а не несколько.
        .AllowMultiSelect = False
        ' Текст для кнопки.
        .ButtonName = "OK"
        ' Сброс фильтра от предыдущего запуска макроса.
            ' Фильтр позволяет отображать в диалоге не все форматы файлов, а несколько,
            ' чтобы юзеру было удобнее найти нужный файл.
        .Filters.Clear
        ' Настраиваем фильтр, чтобы в диалоге отображались только файлы, у которых расширение 'txt'.
        .Filters.Add Description:="Текстовые файлы", Extensions:="*.txt"
        ' Поясняющий текст для юзера в заголовке диалога.
        .Title = "Выберите текстовый файл."
        ' Отображение диалога
        .Show
        ' Если юзер не выбрал файл, выход из процедуры и таким образом макрос завершит работу.
        If .SelectedItems.Count = 0 Then
            Exit Sub
        End If
        ' Запись в переменную 'FN' полного имени выбранного файла.
        FN = .SelectedItems(1)
    End With

    '2. Открытие выбранного файла. Макрос откроет текстовый файл в программе 'Word'.
        ' Открытому файлу присваиваем имя 'doc'. Далее в коде будем обращаться к файлу по имени 'doc'.
        ' ConfirmConversions:=False - чтобы не отображался диалог для выбора формата файла.
        ' Format:=wdOpenFormatAuto - чтобы ворд сам определил, какой формат у открываемого файла.
        ' Encoding:=866 - означает, что открывается текстовый файл, у которого кодировка 'MS-DOS'.
    Set doc = Documents.Open(FileName:=FN, ConfirmConversions:=False, Format:=wdOpenFormatAuto, Encoding:=866)
       
    '3. Сохранение файла в формате 'dotm'.
    ' Извлечение пути, где находится выбранный файл. По этому же пути сохраним и новый файл.
    path = Left(FN, InStrRev(FN, Application.PathSeparator))
    ' CompatibilityMode:=wdCurrent - чтобы файл имел возможности последней версии ворда.
    doc.SaveAs2 FileName:=path & "Шаблон.dotm", FileFormat:=wdFormatXMLTemplateMacroEnabled, _
        CompatibilityMode:=wdCurrent
   
End Sub
[свернуть]

svil

Я сделала два макроса.
Первый макрос (Op) загружает текстовый файл в программу 'Word'.
Второй макрос (Макрос) сохраняет активный файл в формате 'docx'. Этот формат не является шаблоном, шаблоном является формат 'dotm'. Но мне так и надо.

Sub Op()
    Set dlg = Dialogs(wdDialogFileOpen)
    aButton = dlg.Display
    fSelected = dlg.Name
    If aButton = -1 Then
        Set MyDoc = Documents.Open(fSelected)
    End If
End Sub

Sub Макрос()

    Dim FN As String

    FN = Left(ActiveDocument.Name, InStrRev(ActiveDocument.Name, ".") - 1)
    FN = FN & " (копия)" & ".docx"
    FN = ActiveDocument.Path & "\" & FN
    ActiveDocument.SaveAs2 FileName:=FN, FileFormat:=wdFormatXMLDocument

End Sub