2017-10-11 91 views
0

我将从访问中生成一个文档,并希望在文档中使用字段代码“ListNum”。我有以下宏从MS字正确运行时正确地将字段代码添加到文档中。当我从Access运行VBA时,如何在MS Word中添加新的Fieldcode

Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _ 
    "LISTNUM LegalDefault ", PreserveFormatting:=False 

然而,当我在访问通过Word对象运行这个从VBA似乎没有工作。访问中的代码如下。

Dim objApp As Object 
Set objApp = GetObject("Word.Application") 

    Set objApp = CreateObject("Word.Application") 
    objApp.Visible = True 
    Set Word = objApp 

    With Word 
     .Documents.Add 
     .activedocument.Fields.Add Range:=.Selection.Range, Type:=wdFieldEmpty, Text:="LISTNUM LegalDefault ", PreserveFormatting:=False 
    End With 

如果我使用“运行”功能

Word.Run "ListNum" 

从访问调用字它的工作原理也一样,虽然我可以用这个宏,它,因为它依赖于用户具有的效果并不理想这个宏在他们的模板中

感谢您的任何提示。

回答

0

仅供参考,修复似乎是以下

Type:=wdFieldEmpty 

移动到字似乎时,使用恒定值,这是做correc的事情,下面一行没有得到认可的访问可代替

.activedocument.Fields.Add Range:=MyRange, Type:=-1, Text:="LISTNUM LegalDefault " 

我发现常数使用Word对象资源管理器。

+1

如果使用迟绑定(即没有对Word对象模型的引用设置),则适用于所有Word常量。 - 确保在每个模块的顶部有['Option Explicit'](https://msdn.microsoft.com/en-us/library/bw9t3484%28v=vs.84%29.aspx)。 它在编译时执行变量声明并报告未声明或拼写错误的变量/常量,所以它在运行时不会咬你。 要在新模块中自动执行此操作,请在VBA编辑器中设置[需要变量声明](http://www.fmsinc.com/microsoftaccess/modules/options/index.html)选项。 – Andre

+0

是的,我刚才遇到类似的问题,并忘记了这一点。我有一个错误处理程序,我还没有正确定义此模块,它没有提供错误消息,只是跳过它(当时我告诉它要做的)从我睡眠的时刻,但所有排序现在!谢谢。 –