Как использовать VBA, чтобы открыть шаблон Word с поддержкой макросов, где имя файла шаблона является строкой - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть макрос, который создает документы из набора форм файлов, которые раньше были текстовыми шаблонами с расширением имени файла .dotx.

Я изменил файлы на шаблоны слов с поддержкой макросов с расширением .dotm, хочу создать файлы со встроенными макросами и соответствующим образом заполнить шаблоны.

Теперь создатель моего оригинального документа делаетне работает, я уверен, что он ищет файл типа .dotx и не уверен, как:

dim doc as 'macro enabled document'

, в отличие от

dim doc as document

другой части кодаможет потребоваться изменить это

Set doc = Documents.Add(Template:=strTemplate, Visible:=False)

Я думаю, что это может быть что-то вроде

Set doc = Documents.Add(***MacroEnabled***Template:=strTemplate, Visible:=False)

Если кто-то может указать мне правильное направление того, что я пытаюсьСделайте это будет высоко ценится.

Ниже приведен соответствующий раздел кода для справки:

Option Explicit

Private Const TemplateDirectory As String = "W:\Network Movement\Train Control & Authorities\Train Advices and Bulletins\Authorities\Train Advices\Sent\Kohe DIB maker mk  II\L2 Bulletin maker"
Private Const MondayTemplateName As String = "L2 Mon.dotm"
Private Const TuesdayTemplateName As String = "L2 Tue.dotm"
Private Const WednesdayTemplateName As String = "L2 Wed.dotm"
Private Const ThursdayTemplateName As String = "L2 Thu.dotm"
Private Const FridayTemplateName As String = "L2 Fri.dotm"
Private Const SaturdayTemplateName As String = "L2 Sat.dotm"
Private Const SundayTemplateName As String = "L2 Sun.dotm"
Private Const OutputDirectory As String = "W:\Network Movement\Train Control & Authorities\Train Advices and Bulletins\Authorities\Train Advices\Sent\Kohe DIB maker mk   II\L2 Bulletins"
Private Const DateFormat As String = "ddmmyy"
Private Const LongDateFormat As String = "DDDD DD MMMM YYYY"
Private Const FindText As String = "!!!!!!!!"

Sub ShowForm()
frmDateRange.Show
End Sub

Function CreateProFormaBulletins(StartDate As Date, EndDate As Date) As Boolean

Dim dat As Date
Dim strTemplate As String
Dim doc As Document
Dim strFilename As String
Dim datLongDate As Date
Dim i As Integer

Application.ScreenUpdating = False

For dat = StartDate To EndDate
    If Weekday(dat) <> vbMonday Then ' no seperate documents created for monday

        ' create output directory if it dosen't exist
        If Not DirExists(OutputDirectory & IIf(Right(OutputDirectory, 1) <> "\", "\", "")) Then
            MkDir (OutputDirectory & IIf(Right(OutputDirectory, 1) <> "\", "\", ""))
        End If

        ' build filename
        strFilename = OutputDirectory & IIf(Right(OutputDirectory, 1) <> "\", "\", "") & Format(dat, DateFormat) & "L2" & ".docm"

        ' get template name based on constant
        Select Case Weekday(dat)

            Case vbMonday
                strTemplate = MondayTemplateName
            Case vbTuesday
                strTemplate = TuesdayTemplateName
            Case vbWednesday
                strTemplate = WednesdayTemplateName
            Case vbThursday
                strTemplate = ThursdayTemplateName
            Case vbFriday
                strTemplate = FridayTemplateName
            Case vbSaturday
                strTemplate = SaturdayTemplateName
            Case vbSunday
                strTemplate = SundayTemplateName

        End Select
        ' build full path template name
        strTemplate = TemplateDirectory & IIf(Right(TemplateDirectory, 1) <> "\", "\", "") & strTemplate
        ' create doc
        Set doc = Documents.Add(Template:=strTemplate, Visible:=False)
        With doc
            ' replace text
            With .Range.Find
                .Text = FindText
                .Replacement.Text = Format(dat, DateFormat) & "L2"
                .Execute Replace:=wdReplaceAll'''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...