Word Tips

虽然我自己是用latex/markdown写作较多,连ppt都是beamer顺手,但是其他人可能不用,为了团队协作还是必须要知道一些word技巧,于此记录


Word VBA

VBA脚本的使用方法

A picture is worth a thousand words

注意:保存后脚本可以下次直接点击使用,如还有疑问自行百度/谷歌。

替换污染物下标的VBA脚本

以NH3为例简述思路:

  1. 将NH3中替换为NH厷厸
  2. 由于厷厸为生僻字,所有很难出现第二个这样的组合,可以特征的表示NH3中的3
  3. 将厷厸替换为下标格式的数字3

这样就可以实现保留原有格式,仅替换下标

替换PM2.5 SO2 NO2 O3 NH3 PM10 这些变量的脚本如下,根据简述的思路可自行添加其他

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125

Sub replace()

'replace NH3...

With Selection.Find
.ClearFormatting
.Text = "NH3"
.Replacement.ClearFormatting
.Replacement.Text = "NH厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "3"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With

'replace PM10...

With Selection.Find
.ClearFormatting
.Text = "PM10"
.Replacement.ClearFormatting
.Replacement.Text = "PM厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "10"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With

'replace PM2.5...

With Selection.Find
.ClearFormatting
.Text = "PM2.5"
.Replacement.ClearFormatting
.Replacement.Text = "PM厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "2.5"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With

'replace SO2...

With Selection.Find
.ClearFormatting
.Text = "SO2"
.Replacement.ClearFormatting
.Replacement.Text = "SO厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "2"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With

'replace NO2...

With Selection.Find
.ClearFormatting
.Text = "NO2"
.Replacement.ClearFormatting
.Replacement.Text = "NO厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "2"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With


'replace O3...

With Selection.Find
.ClearFormatting
.Text = "O3"
.Replacement.ClearFormatting
.Replacement.Text = "O厷厸"
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
With Selection.Find
.ClearFormatting
.Text = "厷厸"
.Replacement.ClearFormatting
.Replacement.Text = "3"
.Replacement.Font.Subscript = True
.Execute replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
End Sub

选中文中所有表格脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
'**************************************
' 函数名: SelectAllTables
' 功 能:主要是把WORD文档中的所有表格选取上,以便单独对文档中的所有表格进行整体编辑。

'**************************************

Sub SelectAllTables()

Dim tempTable As Table

Application.ScreenUpdating = False

'判断文档是否被保护

If ActiveDocument.ProtectionType = wdAllowOnlyFormFields Then

MsgBox "文档已保护,此时不能选中多个表格!"

Exit Sub

End If

'删除所有可编辑的区域

ActiveDocument.DeleteAllEditableRanges wdEditorEveryone

'添加可编辑区域

For Each tempTable In ActiveDocument.Tables

tempTable.Range.Editors.Add wdEditorEveryone

Next

'选中所有可编辑区域

ActiveDocument.SelectAllEditableRanges wdEditorEveryone

'删除所有可编辑的区域

ActiveDocument.DeleteAllEditableRanges wdEditorEveryone

Application.ScreenUpdating = True

End Sub

Word的通配符

通配符自成体系,和正则的思路不太相同

  1. 替换时输入 ^c可以使用剪切板内容替换,可以保留格式。可以用来将PM2.5PM2.5替换成 PM2.5PM_{2.5},此前手动替换有些愚蠢
  2. 匹配上下标 用于不使用任何参考文献管理软件导入的文献角标 不理解手标的行为