那个书签*确实存在

时间:2014-05-12 18:43:19

标签: word-vba

我正试图从excel VBA到我的Word文档中的特定点。我的最终目标是将新文本复制到文档的底部。

所以我在我的文档底部放了一个书签并做了这个:

wDoc.Goto What:=wdGoToBookmark, Which:=wdGoToFirst, Name:="TemplatePage"

它告诉我“那个书签不存在。”这很有趣,因为它显然有用。它对我的所有书签说了同样的话。

这不会给我一个错误,相反它没有做任何事情:

wDoc.Goto What:=wdGoToBookmark, which:=wdgotofirst

我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:1)

  

我错过了一些明显的东西吗?

IMO你错过了一些东西,但使用“Goto”这个词可能会给人留下错误的印象。

.Goto实际上使您指定的对象“转到”指定的位置。因此,如果该对象是范围,则不应期望选择更改。

另一件事是在这种情况下你必须省略“which”参数。我不知道你怎么能从文档中确定 - 这是一些与范围有关的事情的试错问题。

由于wDoc或wDoc.Content隐含的范围无论如何都不会改变,因此通过执行.Goto作为命令,您将立即丢失任何有用的信息。如果您将其用作函数,则会得到一个范围,因此您可以使用,例如

Dim r As Word.Range
Set r = wDoc.Goto(What:=wdGoToBookmark, Which:=wdGoToFirst)
Debug.print r.start, r.end

或者,如果您想选择结果范围,可以使用

r.Select

但是如果你想设定一个范围

Dim r As Word.Range
Set r = wDoc.Bookmarks("TemplatePage)

是(IMO)更简单,你已经拥有了实际选择它的代码,如果这是你需要的。

答案 1 :(得分:0)

好的,显然GoTo根本不起作用。我在页面,部分,书签上尝试了各种各样的变体,他们要么什么也没做,给出了错误,甚至移到了错误的地方(标题中的选定文字!)

相反,您可以尝试:

wDoc.Bookmarks("TemplatePage").Select

像冠军一样工作。