Skip to content

选区(Selection)

表示窗口或窗格中的当前选定内容。

选定内容表示文档中的选定(或突出显示)区域,或者代表插入点(如果未选择文档中的任何内容)。

每个文档窗格只能有一个 Selection 对象,并且在整个应用程序中只能有一个活动的 Selection 对象。

属性列表

属性说明
返回或设置一个 Font 对象,该对象代表指定对象的字符格式
返回或设置一个 ParagraphFormat 对象,该对象代表指定选定内容中的段落设置。
返回一个 Range 对象, 该对象代表指定对象中包含的文档部分
返回一个 Tables 集合,该集合代表指定选定内容的所有表格
返回一个 Rows 集合,该集合代表区域、选定内容或表格中的所有表格行。此为只读属性
返回一个 Cells 集合,该集合代表选定内容中的表格单元格。此为只读属性
返回一个 InlineShapes 集合,该集合代表选定内容中所有的 InlineShape 对象。此为只读属性

方法列表

方法说明
修改区域范围
将指定的选定内容复制到剪贴板
删除选区内容
获取目标 gcp 在正文中的坐标,相对于正文容器,而不是窗口
根据传入的 gcp 获取对应的相对位置(相对于 document.body),位置不在可视区时返回 -1
表达式:文档类型应用对象。
获取当前页
选区后插入文本
在选区后面插入分隔符
用新段落替换指定的所选内容
将选区范围向下移动
将选区范围向左移动
将选区范围向右移动
将选区范围向上移动
删除选区位置前的字符

Font

返回或设置一个 Font 对象,该对象代表指定对象的字符格式

语法

表达式.ActiveDocument.ActiveWindow.Selection.Font

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // Font 对象
  const font = await selection.Font
}

ParagraphFormat

返回或设置一个 ParagraphFormat 对象,该对象代表指定选定内容中的段落设置。

语法

表达式.ActiveDocument.ActiveWindow.Selection.ParagraphFormat

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // ParagraphFormat 对象
  const paragraphFormat = await selection.ParagraphFormat
}

Range

返回一个 Range 对象, 该对象代表指定对象中包含的文档部分

语法

表达式.ActiveDocument.ActiveWindow.Selection.Range

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // Range 对象
  const range = await selection.Range
}

Tables

返回一个 Tables 集合,该集合代表指定选定内容的所有表格

语法

表达式.ActiveDocument.ActiveWindow.Selection.Tables

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // Tables 对象
  const font = await selection.Tables
}

Rows

返回一个 Rows 集合,该集合代表区域、选定内容或表格中的所有表格行。此为只读属性

语法

表达式.ActiveDocument.ActiveWindow.Selection.Rows

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // Rows 对象
  const font = await selection.Rows
}

Cells

返回一个 Cells 集合,该集合代表选定内容中的表格单元格。此为只读属性

语法

表达式.ActiveDocument.ActiveWindow.Selection.Cells

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // Cells 对象
  const cells = await selection.Cells
}

InlineShapes

返回一个 InlineShapes 集合,该集合代表选定内容中所有的 InlineShape 对象。此为只读属性

语法

表达式.ActiveDocument.ActiveWindow.Selection.InlineShapes

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区对象
  const selection = await app.ActiveDocument.ActiveWindow.Selection

  // InlineShapes 对象
  const font = await selection.InlineShapes
}

SetRange()

修改区域范围

语法

表达式.ActiveDocument.Range(Start, End).SetRange({ Start, End })

或者表达式.ActiveDocument.Tables.Item(Index).Rows.Item(Index).Cells.Item(Index).Range.SetRange({ Start, End })

表达式:文档类型应用对象

参数

属性类型默认值必填说明
Start
number
区域开始位置
End
number
区域结束位置

示例 1

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 获取选中区域
  const range = await app.ActiveDocument.Range(0, 10)

  // 设置区域范围
  await range.SetRange(10, 20)
}

示例 2

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 获取第 1 个表格
  const tableOne = await app.ActiveDocument.Tables.Item(1)

  // 获取表格第 1 行的第 1 个单元格
  const cellOne = await tableOne.Rows.Item(1).Cells.Item(1)

  // 获取该单元格的区域对象
  const range = await cellOne.Range

  // 单元格字体属性
  const font = await range.Font

  // 修改区域范围
  const newRange = await range.SetRange({
    Start: 1,
    End: 10
  })
  const newText = await newRange.Text // 获取新区域文本
  console.log(newText)
}

Copy()

将指定的选定内容复制到剪贴板

语法

表达式.ActiveDocument.ActiveWindow.Selection.Copy()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选中前 10 文字
  await app.ActiveDocument.Range.SetRange(1, 10)

  // 将指定的选定内容复制到剪贴板
  await app.ActiveDocument.ActiveWindow.Selection.Copy()

  // 内容已复制到剪切板,通过 Ctrl + V 可以粘贴
}

Delete()

删除选区内容

语法

表达式.ActiveDocument.ActiveWindow.Selection.Delete(WdUnits)

表达式:文档类型应用对象

参数

WdUnits 是枚举,具体可看: Enum.WdUnits

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 删除选区内容
  await app.ActiveDocument.ActiveWindow.Selection.Delete(1)
}

GetPosByGcp()

获取目标 gcp 在正文中的坐标,相对于正文容器,而不是窗口

GCP:global character position

语法

表达式.ActiveDocument.ActiveWindow.Selection.GetPosByGcp({ Pos })

表达式:文档类型应用对象

参数

属性数据类型默认值必填说明
Gcp
Number
正文的位置

返回值

返回对应的 (x, y) 表示对应的坐标信息

属性数据类型说明
X
Number
x 轴
Y
Number
y 轴

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 返回正文的位置
  const pos = await app.ActiveDocument.ActiveWindow.Selection.GetPosByGcp(1)
  console.log(pos)
}

GetRelativePosByGcp()

根据传入的 gcp 获取对应的相对位置(相对于 document.body),位置不在可视区时返回 -1

GCP:global character position

语法

表达式.ActiveDocument.ActiveWindow.Selection.GetRelativePosByGcp({ Gcp })

表达式:文档类型应用对象

参数

属性数据类型默认值必填说明
Gcp
Number
根据传入的 gcp 获取对应的相对位置(相对于 document.body),位置不在可视区时返回 -1

返回值

返回对应的 (x, y) 表示对应的坐标信息

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 根据传入的 gcp 获取对应的相对位置(相对于document.body),位置不在可视区时返回 -1
  await app.ActiveDocument.ActiveWindow.Selection.GetRelativePosByGcp(1)
}

GoTo()

GoTo() 方法可以协助我们跳转到页面的指定位置,例如指定页面或者指定的书签。

由于文字文档是流式排版,大文档时,跳转时间会比较长,建议加一个中间 loading 过渡效果。

语法

表达式.ActiveDocument.ActiveWindow.Selection.GoTo(What, Which, Count, Name)

表达式:文档类型应用对象。

参数

属性数据类型默认值必填说明
What
Number
可选
指定区域或选定内容要移动到的项的类别。可以是 WdGoToItem 常量之一。指定为 WdGoToItem.wdGoToBookmark,表明需要跳转的类型是书签;指定为 WdGoToItem.wdGoToPage,表明需要跳转的类型是页面
Which
Number
可选
指定区域或选定内容要移动到的项。可以是 WdGoToDirection 常量之一。指定为 WdGoToDirection.wdGoToAbsolute,表明是绝对定位
Count
Number
可选
在文档中的项的数目。默认值为 1。仅正值有效。
Name
String
可选
如果那些参数是 wdGoToBookmark,则此参数指定一个名称。

返回值

返回到跳转后的页面。

示例 1

跳转到指定的页面

js
//@file=base.docx
// 跳转到指定页
async function example() {
  await instance.ready()

  const app = instance.Application

  const page = await app.ActiveDocument.ActiveWindow.Selection.GoTo(
    app.Enum.WdGoToItem.wdGoToPage,
    app.Enum.WdGoToDirection.wdGoToAbsolute,
    3
  )
}

示例 2

跳转到指定的书签

js
//@file=base.docx
// 获取所有书签
async function example() {
  await instance.ready()

  const app = instance.Application

  // 添加书签
  await app.ActiveDocument.Bookmarks.Add({
    Name: 'WebOffice',
    Range: {
      Start: 1,
      End: 10
    }
  })

  // 跳转到指定的书签
  await app.ActiveDocument.ActiveWindow.Selection.GoTo(
    app.Enum.WdGoToItem.wdGoToBookmark, // 类型:Bookmark
    app.Enum.WdGoToDirection.wdGoToAbsolute, // 定位
    undefined, // 数量
    'WebOffice' // 书签名
  )

  // 或者
  await app.ActiveDocument.ActiveWindow.Selection.GoTo({
    What: app.Enum.WdGoToItem.wdGoToBookmark,
    Which: app.Enum.WdGoToDirection.wdGoToAbsolute,
    Name: 'WebOffice' // 书签名
  })
}

Information()

获取当前页

由于文字文档是流式排版,没办法一开始就确定最终页数,只有浏览到最底部才知道总页数。

语法

表达式.ActiveDocument.ActiveWindow.Selection.Information(WdInformation)

表达式:文档类型应用对象

参数

属性数据类型默认值必填说明
WdInformation
Enum
指定返回的涉及指定所选内容或区域的信息的类型。为 3 (WdInformation.wdActiveEndPageNumber)表示页码,在该页中包含指定的所选内容或区域的活动结尾。从文档开头计数。忽略任何对页码的手动调整

返回值

返回 Number 代表当前页页码

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 获取当前页数
  const currentPage =
    await app.ActiveDocument.ActiveWindow.Selection.Information(
      app.Enum.WdInformation.wdActiveEndPageNumber
    )
  console.log(currentPage)
}

InsertAfter()

选区后插入文本

语法

表达式.ActiveDocument.ActiveWindow.Selection.InsertAfter(Text)

表达式:文档类型应用对象

参数

属性数据类型默认值必填说明
Text
String
需要插入的文本

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 选区后插入文本
  await app.ActiveDocument.ActiveWindow.Selection.InsertAfter('Text')
}

InsertBreak()

在选区后面插入分隔符

语法

表达式.ActiveDocument.ActiveWindow.Selection.InsertBreak({ Type })

表达式:文档类型应用对象

参数

属性数据类型默认值必填说明
Type
Enum
Enum.WdBreakType.wdPageBreak
要插入的分页符的类型。默认值是 wdPageBreak,详细可参考 Enum.WdBreakType

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 在选区位置插入分页符(由于是默认值,所以可以不传)
  await app.ActiveDocument.ActiveWindow.Selection.InsertBreak()
}

InsertParagraph()

用新段落替换指定的所选内容

语法

表达式.ActiveDocument.ActiveWindow.Selection.InsertParagraph()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 用新段落替换指定的所选内容
  await app.ActiveDocument.ActiveWindow.Selection.InsertParagraph()
}

MoveDown()

将选区范围向下移动

语法

表达式.ActiveDocument.ActiveWindow.Selection.MoveDown()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 将光标向下移动
  await app.ActiveDocument.ActiveWindow.Selection.MoveDown()
}

MoveLeft()

将选区范围向左移动

语法

表达式.ActiveDocument.ActiveWindow.Selection.MoveLeft()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 将光标向左移动
  await app.ActiveDocument.ActiveWindow.Selection.MoveLeft()
}

MoveRight()

将选区范围向右移动

语法

表达式.ActiveDocument.ActiveWindow.Selection.MoveRight()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 将光标向右移动
  await app.ActiveDocument.ActiveWindow.Selection.MoveRight()
}

MoveUp()

将选区范围向上移动

语法

表达式.ActiveDocument.ActiveWindow.Selection.MoveUp()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 将光标向上移动
  await app.ActiveDocument.ActiveWindow.Selection.MoveUp()
}

TypeBackspace()

删除选区位置前的字符

语法

表达式.ActiveDocument.ActiveWindow.Selection.TypeBackspace()

表达式:文档类型应用对象

示例

js
//@file=base.docx
async function example() {
  await instance.ready()

  const app = instance.Application

  // 光标向下移动
  await app.ActiveDocument.ActiveWindow.Selection.MoveDown()

  // 删除光标前的字符
  await app.ActiveDocument.ActiveWindow.Selection.TypeBackspace()
}