3

我有一个 Access 数据库,我从中创建 Word 文档。我正在使用 Office 2016。当我运行代码时,我要么得到

错误 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只是尝试两者,结果是一样的:一个错误。在第一个中,我更改了变量wdNumberGallery, wdListApplyToWholeListwdWord10ListBehavior其枚举值可在 MSDN 网站上找到,以试图查明错误。

不幸的是,我无法完成这项任务。我正在寻找的是具有以下文本的 Word 文档:


清单:

  1. 第一

  2. 第二

    ...


谢谢大家的帮助

4

2 回答 2

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"
于 2018-08-28T04:49:58.293 回答
0

我做了一些研究,这就是我发现的。

首先,我忘了把变量声明放在我的第一篇文章中。这是我错过的:

Option explicit
Public GBL_objWord As Object
Public GBL_objDoc As Object

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

接下来,我了解了 Early-binding 和 Late-binding 之间的区别。我的变量应该是:

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

这个更改并没有纠正错误,但是当我运行很长的程序时,结果是一个 7 页的 Word 文档,这个过程似乎加快了很多。

现在我可以访问所有 Word 功能,我尝试了

GBL_objWord.Selection.Range.ListFormat.ApplyNumberDefault

而且效果很好!!!

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

谢谢,

真挚地

于 2018-08-29T01:22:01.080 回答