跳转到内容

Word VBA

25% developed
来自维基教科书,开放的书籍,开放的世界

这是一个使用 Visual Basic for Applications 编写 Microsoft Word 脚本的食谱集合。

宏录制

[编辑 | 编辑源代码]

学习 Word VBA 的一个好方法是使用它的宏录制功能。使用此功能,您可以告诉 Word 开始录制,然后执行各种步骤,就像您在没有宏录制器的情况下工作一样,最后,告诉 Word 停止录制。Word 会录制与您使用 Word GUI 执行的操作相对应的 VBA 代码。虽然代码在没有修改的情况下通常无法有效地使用,但从它开始并进行修改可以节省大量时间,否则这些时间将花费在阅读 VBA 文档上。

菜单路径

  • Word 2007:视图(选项卡)> 宏(组)> 宏按钮下方的向下箭头 > 录制宏
  • Word 2007:开发工具(选项卡)> 代码(组)> 录制宏

链接

文本编辑

[编辑 | 编辑源代码]

您可以按如下方式插入和删除文本

Selection.TypeText Text:="Inserted as if by typing on keyboard"
Selection.Delete 'Deleted the single char after cursor, or a non-empty selection

移动光标

[编辑 | 编辑源代码]

您可以按如下方式移动光标

Selection.MoveDown Unit:=wdLine
Selection.MoveRight Unit:=wdCell 'At the end of a row, moves to the next row

您可以按如下方式选择文本区域

Selection.EndKey Unit:=wdLine, Extend:=wdExtend

格式化

[编辑 | 编辑源代码]

您可以按如下方式格式化文本,包括文本颜色、背景颜色和字体属性

Selection.Font.Color = RGB(0, 0, 255) 'Foreground color AKA text color
Selection.Range.HighlightColorIndex = wdYellow 'Background color as highlight
Selection.Font.Name = "Verdana" 'Font face
Selection.Font.Size = 8 'Font size
Selection.Font.Bold = True 'Or False
Selection.Font.Bold = wdToggle
Selection.Font.Italic = True
Selection.Font.Underline = True

复制和粘贴

[编辑 | 编辑源代码]

您可以按如下方式复制和粘贴

Selection.Copy
Selection.Paste

剪贴板

[编辑 | 编辑源代码]

先决条件:从 Word 文档访问剪贴板需要在文档中设置对 MSForms(Microsoft Forms Object Library)的引用。您可以通过添加和随后删除用户窗体来设置引用,方法是在弹出菜单中通过“插入”>“用户窗体”。要检查引用是否存在,请参阅“工具”>“引用”菜单。

将文本放置在剪贴板中

Set MyClipboard = New MSForms.DataObject
MyClipboard.SetText "My string"
MyClipboard.PutInClipboard

从剪贴板获取文本

Set MyClipboard = New MSForms.DataObject
MyClipboard.GetFromClipboard
TextContent = MyClipboard.GetText

链接

  • DataObject 类 at msdn.microsoft.com;包含关于 Visual Basic 的一部分,其对 Word VBA 的适用性尚不清楚。
Sub PasteTabSeparatedPlainTextToTable()
  'This paste prevents loss of formatting of the table cells
  
  Set MyClipboard = New MSForms.DataObject
  MyClipboard.GetFromClipboard
  TextContent = MyClipboard.GetText
 
  SplitArray = Split(TextContent, vbNewLine)
  For Each Element In SplitArray
    SplitArray2 = Split(Element, vbTab)
    TabSkipNeeded = False
    Set OldSelection = Selection.Range
    For Each CellContent In SplitArray2
      If TabSkipNeeded Then
        Selection.MoveRight Unit:=wdCell
      Else
        TabSkipNeeded = True
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
      End If
      Selection.TypeText Text:=CellContent
    Next
    OldSelection.Select
    Selection.MoveDown Unit:=wdLine
  Next
End Sub
[编辑 | 编辑源代码]
[编辑 | 编辑源代码]
华夏公益教科书