Word VBA
外观
这是一个使用 Visual Basic for Applications 编写 Microsoft Word 脚本的食谱集合。
学习 Word VBA 的一个好方法是使用它的宏录制功能。使用此功能,您可以告诉 Word 开始录制,然后执行各种步骤,就像您在没有宏录制器的情况下工作一样,最后,告诉 Word 停止录制。Word 会录制与您使用 Word GUI 执行的操作相对应的 VBA 代码。虽然代码在没有修改的情况下通常无法有效地使用,但从它开始并进行修改可以节省大量时间,否则这些时间将花费在阅读 VBA 文档上。
菜单路径
- Word 2007:视图(选项卡)> 宏(组)> 宏按钮下方的向下箭头 > 录制宏
- Word 2007:开发工具(选项卡)> 代码(组)> 录制宏
链接
- 录制或运行宏(Word 2007) at microsoft.com
- 创建宏(Word 2003) at microsoft.com
- 录制宏以生成代码(Office 2000) at microsoft.com
您可以按如下方式插入和删除文本
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
- Word VBA 参考, docs.microsoft.com
- 标签 ms-word 和 vba, stackoverflow.com