|
本帖最后由 leikaiyi123 于 2017-10-31 20:54 编辑
如何用自动图文件集替换不规范嵌入图? 网上下载的化学试题中的化学方程式的反应条件经常遇到很不美观,于是谋生了想分别将这些反应条件用模板中的自动图文件集来分别替换的想法。可是我在匹配的时候常不能成功,望高手帮忙解决。 文档内附有vba代码,不能完全匹配,望高手修改。 以下所有方程式:①+(或+)号前后、嵌入式图形条件前后都可能有不同数量的半角或全角的空格;②+号前后内容可能交换;③嵌入式图形条件常来自下载文件,很不规范,有些是嵌入式的(点击四周是黑色方点),有些类似是嵌入式(点击后四周是空心圆形点),不知如何转化为前者?否则用[^g]搜不到。不用搜包含[^g]的方程式,本人也不会。搜到后将中间的嵌入图及空格用对应的自动图文集替换。 详见附件。 要求: ①请分别匹配各组,因为各组的图形条件要用不同的自动图文集替换,仅处理以下这些方程式就行了,初中化学主要就这些有图。 ②最好能删所有化学方程式中的半角或全角空格 Public Sub test3() '用自动图文件集替换不规范嵌入图
'////获取模板"WordChem.dot" 的路径为strFilePath,因为反应条件的自动图文集在此模板中
Dim strFilePath As String
If ActiveDocument.AttachedTemplate.Name = "WordChem.dot" Then
strFilePath = ActiveDocument.AttachedTemplate.Path
Else
For k = 1 To AddIns.Count
If AddIns.Item(k).Name = "WordChem.dot" Then strFilePath = AddIns.Item(k).Path
Next k
End If
'////
ActiveDocument.AttachedTemplate = strFilePath & "\WordChem.dot" '载入化学快录模板,因为自动图文集在此模板中
'ActiveDocument.AttachedTemplate = "D:\WordChem.dot" '载入模板
With ActiveDocument.Content.Find
'With Selection.Find
'Do While .Execute("[\++ 0-9egCFHMOPS^32]{4,}[^g^32]{1,}[0-9CSPHFeMgO]{3,}", , , 1) '匹配有问题,请高手指点
Do While .Execute("[0-9CS]{1,}[\++ ^32]{1,}O2[^g^32]{1,}[0-9CSO]{3,}", , , 1) '只匹配C、S燃烧
.Parent.InlineShapes(1).Select
ActiveDocument.AttachedTemplate.AutoTextEntries("=点燃=").Insert Where:=Selection.Range, RichText:=True
.Parent.Collapse 0
Loop
End With
End Sub |
|