DropDownList ContentControls

时间:2016-10-26 19:50:42

标签: vba access-vba word-vba

我正在编写一个Access数据库,它将收集用户输入,然后打开Word文档并填写文档的各个部分。

我遇到的问题是它只适用于下拉列表一次。不知道为什么或在哪里寻找解决这个问题。我以编程方式填写了三种类型的项目。第一种是书签,没有问题。其次是内容控制复选框,这些也没有问题。第三个是内容控制下拉列表,这就是问题所在。我第一次打开Access数据库它可以工作,但如果我再次单击命令按钮,没有(对于Drop Downs)。主要问题是它没有产生错误信息,所以我不确定在哪里看。

我猜它与我创建的对象有关,可以进行下拉更新吗?任何帮助都会很棒:

Dim WordApp As Word.Application
Dim strTemplateLocation As String
Dim dir As String
Dim path As String
Dim wDoc As Word.Document

path = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\"))
strTemplateLocation = path & "UserDoc.docx"

On Error Resume Next
Set WordApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then
  Set WordApp = CreateObject("Word.Application")
End If

WordApp.Visible = True
WordApp.WindowState = wdWindowStateMaximize
WordApp.Documents.Add Template:=strTemplateLocation, newtemplate:=False

With WordApp

'Working Bookmark   
  .Selection.GoTo what:=wdGoToBookmark, Name:="COMPANY": .Selection.TypeText [fac]

'Working checkbox
If Me.RD = True Then: .ActiveDocument.ContentControls(9).Checked = True

'Works ONCE drop down
 Dim objCC As ContentControl
 Dim objCE As ContentControlListEntry
 Dim ListSelection As String

 ListSelection = Me.System_Type.ListIndex + 2
 Set objCC = ActiveDocument.ContentControls(1): Set objCE = objCC.DropdownListEntries.Item(ListSelection): objCE.Select

End With

我应该在结束时关闭objCE和objCC还是什么?

1 个答案:

答案 0 :(得分:0)

这可能是你的问题:

Set objCC = ActiveDocument.ContentControls(1)

应该是

Set objCC = .ActiveDocument.ContentControls(1)

但更好的是:

Set wDoc = WordApp.Documents.Add(Template:=strTemplateLocation, newtemplate:=False)

然后始终使用wDoc代替WordApp.ActiveDocument

见这里:VBA ActiveDocument Concerns / Alternatives?