在Word VBA中,您可以使用Selection.MoveLeft,Selection.MovRight等设置和移动光标位置......
然而,当尝试在Excel VBA中使用相同的方法时,我收到错误说"对象不支持此属性或方法。"
我已导入Word对象库引用。
如何在Excel应用程序上使用VBA移动Word文档上的光标位置。任何帮助将不胜感激。
代码: 设置Doc = ActiveDocument.Content
With Doc.Find
.Execute FindText:="*", ReplaceWith:="NEW*"
End With
Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdParagraph, Count:=11
Selection.MoveRight Unit:=wdWord, Count:=4
Selection.MoveRight Unit:=wdWord, Count:=2, Extend:=wdExtend
Selection.Font.Bold = False
Selection.Font.Name = "Arial"
Selection.Font.Size = 9
答案 0 :(得分:0)
由于您的代码代表关键字" selection"指的是excel中当前选定的单元格,而不是Word文档中的光标位置。并且Excel Selection对象没有移动方法。使用Range而不是选择可能会更成功:您的示例代码转换为
With ActiveDocument
With .Content.Find
.Execute FindText:="*", ReplaceWith:="NEW*"
End With
with .Paragraphs(4).Range.Words(5).Font
.Bold = false
.name = "Arial"
.size = 9
end with
With .Paragraphs(4).Range.Words(6)
.Bold = false
.name = "Arial"
.size = 9
end with
end with
答案 1 :(得分:0)
如果你要改写你的问题,你的问题就会消失,"在Excel应用程序上使用VBA移动Word文档上的光标位置"。您无法使用Excel应用程序在Word文档中移动光标。
当您打开Excel工作簿时,您将加载Excel应用程序的实例。您可以使用此相同的实例打开多个工作簿。它还包含Excel VBA以及Excel应用程序的所有对象,方法和功能。这个实例没有名字。
但您可以使用类似
的代码创建另一个Excel应用程序实例Dim XlApp as Excel.Application
Set XlApp = New Excel.Application
您创建的新实例具有第一个实例的所有功能,但与它完全分开。您可以使用
之类的代码在其中打开工作簿Dim Wb as workbook
Set Wb = XlApp.Workbooks.Add([Template])
现在,如果您已设置对MS Word对象库的引用,则可以使用类似的代码创建Word应用程序,例如,
Dim WdApp as Word.Application
Set WdApp = New Word.Application
这可能是您计算机上运行的唯一MS Word实例,也可能是除已运行的其他实例外创建的新实例。此实例知道MS Word的所有对象和方法。
您可以在同一个VBA项目中控制两个实例XlApp和WdApp,但是您应该小心区分对象。例如,Excel和Word都有一个Range
对象。他们是非常不同的动物。例如,您可以指定
Dim xlRng As Excel.Range
Dim wdRng As Word.Range
Dim MyRng As Range
在此示例中,如果您的VBA项目是Excel项目,MyRng
将是Excel范围。虽然你有两个应用程序运行这种默认会导致脱发。
Dim Wb As Workbook
Dim Doc As Document
由于MS Word中没有Workbook
对象而MS Excel中没有Document
对象,因此不会引起类似的混淆。如果可用,VBA将自动使用正确的应用程序。
操作WdRng
时,您将可以访问Word Range对象的所有方法,包括Move
,但没有Address
属性,例如,属性XlRng
。
处理两个Selection
对象是有问题的。您必须激活窗口或文档或工作簿,VBA将通过查看在所选窗口中运行的应用程序来了解您所指的Selection
对象。如果指定文档/工作簿对象并使用WdRng
或XlRng
对象来操作数据,则不会遇到此问题。
答案 2 :(得分:0)
'Something Basic
'Session of word
'Existing document
Sub fromaWordDoc0()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Set wdApp = CreateObject("word.application")
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Add("C:\Documents\words.docx")
With wdApp.Selection
wdApp.Selection.MoveRight Unit:=wdWord, Count:=4
End With
Set wdApp = Nothing: Set wdDoc = Nothing
End Sub