Как мне создать выпадающий список в документе Word, использующем шаблон?

#ms-access #ms-word #vba

#ms-access #ms-word #vba

Вопрос:

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

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

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

Установите doc = oWord .Документы.Добавить(strWordTemplate)

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

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

 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 amp; "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. Показанная вами команда заменит все содержимое документа элементом управления содержимым. Попробуйте объявить и создать экземпляр Word.Range объекта и назначить ему целевую позицию для элемента управления. И я не вижу в показанном коде ничего, что имело бы какое-либо отношение к таблицам — что именно должно произойти, неясно.

2. Я отредактировал сообщение, чтобы исправить мои ошибки. Кроме того, я бы просто уменьшил значение temp как Word.Range, а затем: doc.temp.contentcontrols… или есть еще один шаг?

3. Если вы отвечаете кому-то, не забудьте «пинговать» его, используя @ , например @BoatHouse, иначе человек не будет уведомлен. И, да, элементы управления содержимым были новыми в 2007 году.

Ответ №1:

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

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

 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:usersuserdesktop"

    '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 amp; "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
  

Комментарии:

1. Только сейчас вижу это. Я попробовал ваш код, но все равно получил ту же ошибку. Я даже переместил шаблон из его исходного местоположения на рабочий стол и жестко запрограммировал strWordTemplate в это местоположение. все та же проблема. Если это поможет, установка отображаемых оповещений и видимого значения True дала мне 2 отдельных документа word. один с таблицей и один пустой. Может ли проблема быть в «.dot» вместо «.dotx»?

2. Я действительно попытался изменить файл «.dot» на «.dotx», и это устранило проблему. Я предполагаю, что выпадающий список был новым для word 2007, поэтому шаблоны 2003 не приняли бы команду