如何通过Excel VBA使用单词选择方法

时间:2017-06-12 18:57:54

标签: vba excel-vba word-vba excel

在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

3 个答案:

答案 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对象。如果指定文档/工作簿对象并使用WdRngXlRng对象来操作数据,则不会遇到此问题。

答案 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