我正在使用电子表格捕获测试用例,并在自动生成Word文档以呈现给业务的过程中。但是,我无法使用GoTo
函数来处理文件。
所有子项均写入Excel VBA实例中。
以下是两个相关的子项:
Sub 1
Sub CreateTestDocument()
Set wordapp = CreateObject("word.Application")
Set Wordfile = wordapp.Documents.Open("S:\myPath\myFilename.dotm")
wordapp.Visible = True
AddNextCase ("FeatureCases")
End Sub
'Sub 2(从Sub 1调用)
Sub AddNextCase(Bmark As String)
Wordfile.Activate
Wordfile.SelectAllEditableRanges
ActiveWindow.Selection.Goto What:=wdGoToBookmark, Name:=Bmark 'ERROR HERE
Selection.TypeText "TEST1"
End Sub
在Selection.Goto
行中,出现以下错误:
运行时错误438:
对象不支持此属性或方法
我尝试了各种不同的方法,但是在设置入口点以开始放置此文本块时,我总是遇到障碍,这是我所缺少的明显问题吗?
答案 0 :(得分:3)
您需要确保解决了以下几件事:
确保在模块级别定义wordapp
和wordfile
对象。我已经使用来自Microsoft Word XX.X Object Library
的对象类型引用在下面显示了这一点。这还将确保定义了您使用的所有单词常量。
然后,您需要使用wordapp
上下文进行activewindow
调用。这是通过wordapp.activewindow
Private wordapp As Word.Application, _
wordfile As Word.Document
Sub CreateTestDocument()
Set wordapp = CreateObject("word.Application")
Set wordfile = wordapp.Documents.Open("FILE NAME")
wordapp.Visible = True
AddNextCase ("FeatureCases")
End Sub
Sub AddNextCase(Bmark As String)
wordfile.Activate
wordfile.SelectAllEditableRanges
wordapp.ActiveWindow.Selection.Goto What:=wdGoToBookmark, Name:=Bmark
wordapp.Selection.TypeText "TEST1"
End Sub
答案 1 :(得分:-1)
按照MDN (改写):
.ActiveWindow
是一个Application
属性,它返回 活动窗口(Window Object)。
但是,您不能将方法应用于属性,而需要将其应用于Window Object
。实现此目的的最简单方法是将窗口对象存储到变量中。
此外,您的变量(例如wordapp
或Wordfile
可能是对象,因为您拥有Set
,但是在代码中没有声明任何地方。
因此您的代码应如下所示:
Private Wordfile as Word.Document
Set Wordfile = CreateObject("word.Application")
Private word as Word.Application
Set word = wordapp.Documents.Open("S:\myPath\myFilename.dotm")
' ... rest of the code
wordapp.ActiveWindow.Selection.GoTo '... etc
总的来说,我建议您对对象进行一些研究,因为您似乎有一些学习空白(出于尊重的考虑)