在Word VBA你可以设置和使用Selection.MoveLeft,Selection.MovRight等移动光标位置...
然而,同时试图在Excel中使用VBA同样的方法,我得到一个错误说“对象犯规支持此属性或方法。”
我已经导入Word对象库引用。
我怎么能够移动上的Excel应用程序使用VBA在Word文档中的光标位置。任何帮助将不胜感激。
代码:设置文件= 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
当你的代码代表关键词“评选的”是指在Excel中当前选定单元格,而不是你的Word文档中的光标位置。和Excel选择对象没有移动方法。你可能有使用范围更大的成功,而不是选择:你的示例代码翻译成
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
您的问题将自动消失,如果你改一下你的问题,“移动上的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的方法。
您可以控制这两种情况下,XlApp和WdApp,在相同的VBA项目,但你要小心区分对象。 Excel和Word中有例如Range
对象。他们是非常不同的动物。您可以指定,例如,
Dim xlRng As Excel.Range
Dim wdRng As Word.Range
Dim MyRng As Range
在这个例子中,MyRng
将是一个Excel范围,如果您的VBA项目的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
对象来操作你的数据,你不会有这个问题。
'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