如何用文字通过Excel的VBA选择方法

问题描述 投票:0回答:3

在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
vba excel-vba word-vba excel
3个回答
0
投票

当你的代码代表关键词“评选的”是指在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

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的方法。

您可以控制这两种情况下,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对象,你看在选择窗口中运行该应用程序的意思。如果指定的文件/工作簿对象,并使用WdRngXlRng对象来操作你的数据,你不会有这个问题。


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
© www.soinside.com 2019 - 2024. All rights reserved.