Как создать выпадающий список в документе Word, который использует шаблон? - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь создать раскрывающийся список в документе Word, который создается с помощью шаблона (все это делается с помощью нажатия кнопки в доступе).Когда код выполняется, он останавливается на строке для создания раскрывающегося списка и выдает следующую ошибку:

Ошибка времени выполнения '445': объект не поддерживает это действие

Я сузил проблему до этой строки:

Установить doc = oWord.Documents.Add (strWordTemplate)

Раскрывающийся список не возникает, когда'strWordTemplate' удален из 'Add ()'.Это только дает мне чистый документ с выпадающим списком.Как разместить раскрывающийся список в документе, созданном с помощью шаблона?

strWordTemplate - это расположение файла шаблона календаря для слова.TemplatePath - это глобальная строковая константа, в которой хранятся шаблоны слов.В идеале, я бы поместил один и тот же выпадающий список (одинаковые значения) в каждую ячейку календаря, но я хочу выяснить, как получить и шаблон, и раскрывающийся список, которые будут отображаться в одном и том же документе сначала

Public Sub MakeCalendar()
Dim strWordTemplate As String
Dim oWord As Object
Dim doc As Word.Document

    'Open a Word Doc With the Template
    Set oWord = CreateObject("Word.application")
    oWord.Visible = False
    oWord.DisplayAlerts = False

    strWordTemplate = TemplatePath & "Calendar.dot"
    Set doc = oWord.Documents.Add(strWordTemplate) 'template is added here

    doc.ContentControls.Add wdContentControlDropdownList 'having the template added causes this line to fail

    'Show the Word Doc
    oWord.DisplayAlerts = True
    oWord.Visible = True

End Sub

1 Ответ

1 голос
/ 14 апреля 2019

Пробовал ваш (модифицированный) код из Excel, так как я считаю себя Zero in Access (точнее, я использовал для запуска из Access).это работает, и надеюсь, что ваша проблема будет решена, как показано ниже enter image description here

, а код является самообъяснимым

Public Sub MakeCalendar()
Dim strWordTemplate As String
Dim oWord As Object
Dim doc As Word.Document

Dim TemplatePath As String
Dim Tbl As Table, cl As Cell, Rw As Row
'Modify/Delete to your requirement, but take care that last slash ("\") is in place in the path
'it is the most probable cause of error in your code
'It in first place it failed to open the template, but does not give alerts
'as DisplayAlerts set to false and then gives eroor 424 on next line
TemplatePath = "C:\users\user\desktop\"

    'Open a Word Doc With the Template
    Set oWord = CreateObject("Word.application")
    oWord.Visible = True                     ' modify to your choice
    oWord.DisplayAlerts = True               ' modify to your choice

    strWordTemplate = TemplatePath & "Calendar.dotx"
    Set doc = oWord.Documents.Add(strWordTemplate) 'template is added here
    Set Tbl = doc.Tables(1)                      ' Modify to your requirement

    For Each Rw In doc.Tables(1).Rows
    For Each cl In Rw.Cells
    cl.Range.ContentControls.Add wdContentControlDropdownList
    Next cl
    Next Rw
     ' Or use your original code
    'doc.ContentControls.Add wdContentControlDropdownList 'having the template added causes this line to fail

    'Show the Word Doc
    oWord.DisplayAlerts = True
    oWord.Visible = True

End Sub
...