问题描述
我已经有一个包含很多代码的Excel文档,该文档执行的操作与我在此模块中使用的任何代码无关。我遇到的问题是将Word.Document
类型的对象传递给子例程,该子例程最终会做一些工作来更改该Word文档。首先,我有代码。
Option Explicit
Public oWordApplication As Word.Application
Public oWordDocument As Word.Document
Sub GenerateWordProposal()
Set oWordApplication = New Word.Application
Set oWordDocument = oWordApplication.Documents.Add
oWordApplication.Visible = True
oWordDocument.Activate
PCL_PageLayout (oWordDocument)
PCL_HeaderFooter (oWordDocument)
End Sub
Sub PCL_PageLayout (theDoc as Word.Document)
'Nothing here yet.
Debug.Print "PageLayout code"
End Sub
Sub PCL_HeaderFooter (theDoc as Word.Document)
'Nothing here yet.
Debug.Print "HeaderFooter code"
End Sub
因此,当我执行此代码时,我得到的错误是Compile Error: Type mismatch
。我什至没有以任何方式操纵它。我打算在这里做很多事情,因为传递给该子例程的每个文档都需要从一开始就看起来一样。还有其他子例程会根据Excel工作表中的信息来修改各个文档,但是尚未对它们进行编码。
我在这里和Google上进行了搜索,但似乎找不到任何具体指向Word.Document
对象传递给子例程/函数的内容。尝试byRef
和byVal
,它们都返回相同的错误。尝试将sub的参数更改为类型Variant
,并抛出Runtime Error 424,Object Required
。我已经启用了引用中的Microsoft Word 16.0 Object Library
,它位于优先级列表的底部,除了默认值外,仅添加了一个。
问题是,我在做什么错? Word.Document
或Word.Application
不能作为参数传递吗?最终,我将需要在多个不同的文档上从这些子例程中的每个例程执行代码,因此仅对所需的单个值进行编码实际上不是一个可行的选择。
解决方法
braX回答:删除括号
PCL_PageLayout oWordDocument