宏与自动化 #

宏基础 #

什么是宏 #

text
宏是一系列操作的记录,可以重复执行,实现自动化处理。

宏的作用:
├── 自动执行重复操作
├── 提高工作效率
├── 减少人工错误
├── 批量处理文档
└── 自定义功能

宏的类型:
├── 录制宏:记录用户操作
├── Basic 宏:使用 Basic 语言编写
├── Python 宏:使用 Python 语言编写
└── JavaScript 宏:使用 JavaScript 编写

宏安全性 #

text
设置宏安全性:

工具 → 选项 → OpenOffice → 安全性 → 宏安全性

安全级别:
├── 低:允许所有宏(不推荐)
├── 中:询问是否启用宏
├── 高:仅允许签名的宏
└── 很高:仅允许来自受信任位置的宏

建议:
├── 使用中或高安全级别
├── 仅启用可信来源的宏
├── 不明来源文档禁用宏
└── 定期检查宏设置

录制宏 #

开始录制 #

text
录制宏:

1. 工具 → 宏 → 录制宏
2. 执行要记录的操作
3. 完成后点击"停止录制"
4. 保存宏:
   ├── 选择宏位置
   ├── 输入宏名称
   └── 点击"保存"

录制内容:
├── 菜单命令
├── 工具栏操作
├── 格式设置
├── 文本输入
└── 部分对话框操作

注意:
├── 鼠标操作可能无法准确录制
├── 建议使用键盘快捷键
└── 录制后测试宏效果

运行宏 #

text
运行宏:

方法一:菜单命令
├── 工具 → 宏 → 运行宏
├── 选择宏位置
├── 选择宏名称
└── 点击"运行"

方法二:宏对话框
├── 工具 → 宏 → 管理宏 → Basic
├── 选择宏
├── 点击"运行"
└── 执行宏

方法三:快捷键
├── 为宏分配快捷键
└── 按快捷键运行

方法四:工具栏按钮
├── 为宏创建工具栏按钮
└── 点击按钮运行

编辑宏 #

text
编辑录制的宏:

1. 工具 → 宏 → 管理宏 → Basic
2. 选择要编辑的宏
3. 点击"编辑"
4. 打开 Basic IDE
5. 修改代码
6. 保存修改

Basic IDE 功能:
├── 代码编辑器
├── 语法高亮
├── 自动补全
├── 调试工具
└── 帮助文档

Basic 宏编程 #

Basic 语法基础 #

text
OpenOffice Basic 语法:

注释
├── ' 单行注释
└── Rem 注释内容

变量声明
├── Dim 变量名 As 类型
├── Dim i As Integer
├── Dim s As String
└── Dim doc As Object

数据类型
├── Integer:整数
├── Long:长整数
├── Single:单精度浮点
├── Double:双精度浮点
├── String:字符串
├── Boolean:布尔值
├── Variant:变体类型
└── Object:对象

运算符
├── 算术:+ - * / ^ Mod
├── 比较:= <> < > <= >=
├── 逻辑:And Or Not
└── 字符串:&

基本结构 #

text
条件语句:

If 条件 Then
    ' 语句
ElseIf 条件 Then
    ' 语句
Else
    ' 语句
End If

Select Case 表达式
    Case 值1
        ' 语句
    Case 值2
        ' 语句
    Case Else
        ' 语句
End Select

循环语句:

For i = 1 To 10
    ' 语句
Next i

Do While 条件
    ' 语句
Loop

Do
    ' 语句
Loop Until 条件

For Each 元素 In 集合
    ' 语句
Next

常用对象 #

text
OpenOffice 对象模型:

获取当前文档
Dim doc As Object
doc = ThisComponent

获取文本内容
Dim text As Object
text = doc.getText()

获取光标
Dim cursor As Object
cursor = doc.getCurrentController().getViewCursor()

获取选择
Dim selection As Object
selection = doc.getCurrentSelection()

常用文档对象:
├── ThisComponent:当前文档
├── StarDesktop:OpenOffice 桌面
├── CreateUnoService:创建服务
└── GetDefaultContext:获取上下文

文档操作示例 #

text
插入文本示例:

Sub InsertText()
    Dim doc As Object
    Dim text As Object
    Dim cursor As Object
    
    doc = ThisComponent
    text = doc.getText()
    cursor = doc.getCurrentController().getViewCursor()
    
    text.insertString(cursor, "Hello World!", False)
End Sub

格式设置示例:

Sub FormatText()
    Dim doc As Object
    Dim cursor As Object
    
    doc = ThisComponent
    cursor = doc.getCurrentController().getViewCursor()
    
    cursor.CharFontName = "Arial"
    cursor.CharHeight = 14
    cursor.CharWeight = com.sun.star.awt.FontWeight.BOLD
    cursor.CharColor = RGB(255, 0, 0)
End Sub

创建新文档示例:

Sub CreateNewDocument()
    Dim doc As Object
    doc = StarDesktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, Array())
End Sub

Python 宏 #

Python 宏基础 #

text
OpenOffice 支持 Python 宏:

Python 优势:
├── 语法简洁
├── 功能强大
├── 丰富的库支持
└── 更现代的编程体验

Python 宏位置:
├── Windows: %APPDATA%\OpenOffice\4\user\Scripts\python
├── macOS: ~/Library/Application Support/OpenOffice/4/user/Scripts/python
└── Linux: ~/.openoffice/4/user/Scripts/python

运行 Python 宏:
├── 工具 → 宏 → 管理宏 → Python
├── 选择宏
└── 点击"运行"

Python 宏示例 #

text
Python 宏示例:

import uno

def insert_text():
    doc = XSCRIPTCONTEXT.getDocument()
    text = doc.getText()
    cursor = doc.getCurrentController().getViewCursor()
    text.insertString(cursor, "Hello from Python!", False)

def format_paragraph():
    doc = XSCRIPTCONTEXT.getDocument()
    cursor = doc.getCurrentController().getViewCursor()
    cursor.ParaStyleName = "Heading 1"

def count_words():
    doc = XSCRIPTCONTEXT.getDocument()
    text = doc.getText()
    word_count = len(text.getString().split())
    return word_count

宏管理 #

宏组织 #

text
组织宏:

宏模块:
├── 将相关宏组织在模块中
├── 便于管理和维护
└── 提高代码可读性

创建模块:
├── 工具 → 宏 → 管理宏 → Basic
├── 选择宏位置
├── 点击"新建"
├── 输入模块名称
└── 点击"确定"

模块结构:
├── Module1
│   ├── Macro1
│   ├── Macro2
│   └── Macro3
├── Module2
│   └── Macro4
└── ...

宏导入导出 #

text
导入导出宏:

导出宏:
├── 工具 → 宏 → 管理宏 → Basic
├── 选择模块
├── 点击"组织"
├── 选择"导出"
└── 保存为 .bas 文件

导入宏:
├── 工具 → 宏 → 管理宏 → Basic
├── 选择位置
├── 点击"组织"
├── 选择"导入"
└── 选择 .bas 文件

用途:
├── 备份宏
├── 分享宏
└── 迁移宏到其他电脑

分配快捷键 #

text
为宏分配快捷键:

1. 工具 → 自定义 → 键盘
2. 类别:OpenOffice 宏
3. 选择宏
4. 按下快捷键组合
5. 点击"修改"
6. 点击"确定"

建议快捷键:
├── Ctrl+Shift+字母
├── Ctrl+Alt+字母
├── 避免与系统快捷键冲突
└── 选择容易记忆的组合

添加到工具栏 #

text
将宏添加到工具栏:

1. 工具 → 自定义 → 工具栏
2. 选择目标工具栏
3. 点击"添加"
4. 类别:OpenOffice 宏
5. 选择宏
6. 点击"添加"
7. 点击"关闭"
8. 点击"确定"

自定义按钮:
├── 选择添加的按钮
├── 点击"修改"
├── 更改图标
├── 更改名称
└── 点击"确定"

实用宏示例 #

批量格式化 #

text
批量格式化段落:

Sub FormatAllParagraphs()
    Dim doc As Object
    Dim paragraphs As Object
    Dim i As Integer
    
    doc = ThisComponent
    paragraphs = doc.getText().createEnumeration()
    
    Do While paragraphs.hasMoreElements()
        Dim para As Object
        para = paragraphs.nextElement()
        
        If para.supportsService("com.sun.star.text.Paragraph") Then
            para.ParaStyleName = "正文文本"
        End If
    Loop
End Sub

批量替换 #

text
批量替换文本:

Sub BatchReplace()
    Dim doc As Object
    Dim replace As Object
    
    doc = ThisComponent
    replace = doc.createReplaceDescriptor()
    
    replace.setSearchString("旧文本")
    replace.setReplaceString("新文本")
    
    doc.replaceAll(replace)
End Sub

文档统计 #

text
统计文档信息:

Sub DocumentStats()
    Dim doc As Object
    Dim text As Object
    Dim charCount As Long
    Dim wordCount As Long
    Dim paraCount As Long
    
    doc = ThisComponent
    text = doc.getText()
    
    charCount = Len(text.getString())
    wordCount = UBound(Split(text.getString(), " ")) + 1
    paraCount = doc.getText().getCount()
    
    MsgBox "字符数: " & charCount & Chr(10) & _
           "单词数: " & wordCount & Chr(10) & _
           "段落数: " & paraCount
End Sub

调试宏 #

调试工具 #

text
Basic IDE 调试功能:

断点:
├── 点击代码行左侧设置断点
├── 运行时在断点处暂停
└── 检查变量值

单步执行:
├── F8:单步执行
├── Shift+F8:单步跳过
└── Ctrl+Shift+F8:跳出

监视窗口:
├── 添加变量到监视窗口
├── 实时查看变量值
└── 跟踪变量变化

立即窗口:
├── 执行即时命令
├── 查看表达式值
└── 测试代码片段

错误处理 #

text
错误处理语法:

Sub SafeMacro()
    On Error GoTo ErrorHandler
    
    ' 宏代码
    
    Exit Sub
    
ErrorHandler:
    MsgBox "错误: " & Err & " - " & Error$
    Resume Next
End Sub

错误处理函数:
├── Err:错误号
├── Error$:错误描述
├── Erl:错误行号
├── Resume:继续执行
├── Resume Next:继续下一行
└── Resume 标签:跳转到标签

快捷键参考 #

宏操作 #

快捷键 功能
Alt+F11 打开宏管理器
F5 运行宏
F8 单步执行
Shift+F8 单步跳过

Basic IDE #

快捷键 功能
F1 帮助
Ctrl+Space 自动补全
Ctrl+F 查找
Ctrl+H 替换

下一步 #

掌握宏与自动化后,接下来学习 制作专业简历,开始实战应用!

最后更新:2026-04-13