#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 не приняли бы команду