我有一个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**"
我使用方法ApplyListTemplate
和ApplyListTemplateWithLevel
只是尝试两者,结果是相同的:一个错误。在第一个变量中,我更改了变量wdNumberGallery
,wdListApplyToWholeList
和wdWord10ListBehavior
的变量,并在MSDN网站上提供了它们的枚举值,以试图查明错误。
很遗憾,我无法完成此任务。我正在寻找的是具有以下文本的Word文档:
物品清单:
第一名
第二名
...
谢谢大家的帮助
答案 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
它运行完美!!!
即使您的答案都不是一个好答案,我也要感谢您的帮助和指导,因为这些答案使我走上了正确的轨道。
谢谢
真诚的