创建编号列表时VBA访问Word错误

时间:2018-08-28 02:51:12

标签: vba list ms-access ms-word numbered

我有一个Access数据库,可以从中创建Word文档。我正在使用Office2016。运行代码时,我会得到

  

错误462“远程服务器计算机不存在或不可用”

  

错误-2147023170“错误:自动化错误,远程过程调用   失败”

并且Word关闭。

On Error GoTo Err_CMD_Test

'Open Word document
    Set GBL_objWord = CreateObject("Word.Application")
    GBL_objWord.Visible = True
    GBL_objWord.Activate
    Set GBL_objDoc = GBL_objWord.Documents.Add
    GBL_objDoc.Activate

'Traitement
    GBL_objWord.Selection.TypeText Text:="List of something :"
    GBL_objWord.Selection.TypeParagraph

    GBL_objWord.Selection.TypeText Text:="Number one"
    GBL_objWord.Selection.Range.ListFormat.ApplyListTemplate ListTemplate:=ListGalleries(2).ListTemplates(1), ContinuePreviousList:=True, ApplyTo:=0, DefaultListBehavior:=2
    GBL_objWord.Selection.TypeParagraph
    GBL_objWord.Selection.TypeText Text:="Number two"
    GBL_objWord.Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:=ListGalleries(wdNumberGallery).ListTemplates(1), ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList, DefaultListBehavior:=wdWord10ListBehavior


Exit_CMD_Test:
    Exit Sub

Err_CMD_Test:
    Select Case Err.Number
    Case Else
        MsgBox "Erreur : " & Err.Description & vbCrLf & _
               "Numéro : " & Err.Number & vbCrLf & _
               "Procédure : CMD_Test", vbCritical, ""
        Resume Next
    End Select

代码在

处中断
GBL_objWord.Selection.Range.ListFormat.ApplyListTemplate _
  ListTemplate:=ListGalleries(2).ListTemplates(1), _
  ContinuePreviousList:=True, ApplyTo:=0, DefaultListBehavior:=2

GBL_objWord.Selection.Range.ListFormat.ApplyListTemplateWithLevel _
  ListTemplate:=ListGalleries(wdNumberGallery).ListTemplates(1), _
  ContinuePreviousList:=False, ApplyTo:=wdListApplyToWholeList, _
  DefaultListBehavior:=wdWord10ListBehavior**"

我使用方法ApplyListTemplateApplyListTemplateWithLevel只是尝试两者,结果是相同的:一个错误。在第一个变量中,我更改了变量wdNumberGallerywdListApplyToWholeListwdWord10ListBehavior的变量,并在MSDN网站上提供了它们的枚举值,以试图查明错误。

很遗憾,我无法完成此任务。我正在寻找的是具有以下文本的Word文档:


物品清单:

  1. 第一名

  2. 第二名

    ...


谢谢大家的帮助

2 个答案:

答案 0 :(得分:2)

问题来自使用延迟绑定时Access VBA无法识别ListGalleries。如果那完全符合Word.Application对象的要求,则代码对我有用:

Set GBL_objWord = CreateObject("Word.Application")
GBL_objWord.Visible = True
GBL_objWord.Activate
Set GBL_objDoc = GBL_objWord.Documents.Add
GBL_objDoc.Activate

'Traitement
GBL_objWord.Selection.TypeText Text:="List of something :"
GBL_objWord.Selection.TypeParagraph

GBL_objWord.Selection.TypeText Text:="Number one"
GBL_objWord.Selection.Range.ListFormat.ApplyListTemplate _
  ListTemplate:=GBL_objWord.ListGalleries(2).ListTemplates(1), _
  ContinuePreviousList:=True, ApplyTo:=0, DefaultListBehavior:=2
GBL_objWord.Selection.TypeParagraph
GBL_objWord.Selection.TypeText Text:="Number two"

答案 1 :(得分:0)

我已经做了一些研究,这就是我发现的东西。

首先,我忘记在第一篇文章中放置变量声明。这是我想念的:

Option explicit
Public GBL_objWord As Object
Public GBL_objDoc As Object

此外,我没有提到在“工具/参考”中选择了Microsoft Word 16.0对象库。

接下来,我了解了早装和晚装之间的区别。我的变量应该是:

Public GBL_objWord As Word.Application
Public GBL_objDoc As Word.Document

此更改并未纠正错误,但是当我运行很长的程序(结果是7页的Word Document)时,该过程似乎已大大加快了速度。

现在我可以使用所有Word功能了,我尝试了

GBL_objWord.Selection.Range.ListFormat.ApplyNumberDefault

它运行完美!!!

即使您的答案都不是一个好答案,我也要感谢您的帮助和指导,因为这些答案使我走上了正确的轨道。

谢谢

真诚的