Автор Тема: VBA Макросы: Создание шаблона word из ms-dos.  (Прочитано 239 раз)

Оффлайн svil

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

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

  • Administrator
  • Сообщений: 1720
Re: VBA Макросы: Создание шаблона word из ms-dos.
« Ответ #1 : 11 Декабрь 2018, 10:52 »
Макрос отображает диалог для выбора 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

  • Посетитель форума
  • Сообщений: 3
Re: VBA Макросы: Создание шаблона word из ms-dos.
« Ответ #2 : 11 Декабрь 2018, 12:51 »
Я сделала два макроса.
Первый макрос (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

Оффлайн svil

  • Посетитель форума
  • Сообщений: 3
Re: VBA Макросы: Создание шаблона word из ms-dos.
« Ответ #3 : 11 Декабрь 2018, 12:52 »
Спасибо.