VBA自动判定Word的当前段落为图片或是为目录
时间:2011-05-12
来源:互联网
请教一下各位大虾。。。
在写一个word段落格式自动检查的代码,一级标题二级标题可以通过检测段首的字符检测出来,其余的为正文,但是遇到一个问题,不知道怎么判断当前段落是不是图片或目录,这样会导致检查的结果有问题,一遇到图片和目录就会使检测结果出错。请问一下在Word VBA里该怎样判定当前段落是图片或是目录的一部分。。十分感谢!
现有的识别检查代码:
Function CheckPForm(p As Integer, i As Paragraph) As String
'根据段落级别,和现有段落格式进行比对,以进行格式效验
Dim cs As String
Dim ch As Integer
Dim Fp As Font
Set Fp = New Font
Dim Pp As ParagraphFormat
Set Pp = New ParagraphFormat
Dim myRange As Range '获得当前段落的索引
Set myRange = i.Range
myRange.SetRange 0, myRange.End
ch = myRange.Paragraphs.Count
cs = ""
If i.Range.Font.NameFarEast = FontType(p, Fp).NameFarEast Then '检查中文字体是否正确
Else
cs = cs + "段落" + Str(ch) + "中文字体不正确!" + Chr(10)
End If
If i.Range.Font.NameAscii = FontType(p, Fp).NameAscii Then '检查西文字体是否正确
Else
cs = cs + "段落" + Str(ch) + "西文字体不正确!" + Chr(10)
End If
If i.Range.Font.Size = FontType(p, Fp).Size Then '检查字体大小
Else
cs = sc + "段落" + Str(ch) + "字体大小不正确!" + Chr(10)
End If
If i.Range.Font.Bold = FontType(p, Fp).Bold Then '检查字体加粗设置
Else
cs = cs + "段落" + Str(ch) + "字体加粗设置不正确!" + Chr(10)
End If
If i.Range.Font.Italic = FontType(p, Fp).Italic Then '检查字体斜体设置
Else
cs = cs + "段落" + Str(ch) + "字体斜体设置不正确!" + Chr(10)
End If
If i.Range.ParagraphFormat.OutlineLevel = PFormatType(p, Pp).OutlineLevel Then '大纲级别检查
Else
cs = cs + "段落" + Str(ch) + "大纲级别设置不正确!" + Chr(10)
End If
If i.Range.ParagraphFormat.Alignment = PFormatType(p, Pp).Alignment Then '对齐方式设置检查
Else
cs = cs + "段落" + Str(ch) + "对齐方式设置不正确!" + Chr(10)
End If
CheckPForm = cs
End Function
Public Function CheckP(i As Paragraph)
'根据每个段落开头的字段判断该段落的级别
Dim Mystr As String
Mystr = "一二三四五六七八九"
If i.Range Like "摘要?" = True Or i.Range Like "Abstract?" = True Or i.Range Like "摘 要?" = True Or i.Range Like "结束语?" = True Or i.Range Like "致谢?" = True Or i.Range Like "参考文献*" = True Then
CheckP = 0
ElseIf i.Range Like "?摘要?" = True Or i.Range Like "?摘 要?" = True Or i.Range Like "?Abstract?" = True Or i.Range Like "?结束语?" = True Or i.Range Like "?致谢?" = True Or i.Range Like "?参考文献*" = True Then
CheckP = 10
ElseIf i.Range Like "第一章*" = True Or i.Range Like "?第二章*" = True Or i.Range Like "?第三章*" = True Or i.Range Like "?第四章*" = True Or i.Range Like "?第五章*" = True Or i.Range Like "?第六章*" = True Or i.Range Like "?第七章*" = True Or i.Range Like "?第八章*" = True Or i.Range Like "?第九章*" = True Or i.Range Like "?第十章*" = True Or i.Range Like "?第十一章*" = True Or i.Range Like "?第十二章*" = True Or i.Range Like "?第十三章*" = True Or i.Range Like "?第十四章*" = True Or i.Range Like "?第十五章*" = True Or i.Range Like "?第十六章*" = True Or i.Range Like "?第十七章*" = True Or i.Range Like "?第十八章*" = True Or i.Range Like "?第十九章*" = True Or i.Range Like "?第二十章*" = True Then
CheckP = 1
ElseIf i.Range Like "?第一章*" = True Or i.Range Like "第二章*" = True Or i.Range Like "第三章*" = True Or i.Range Like "第四章*" = True Or i.Range Like "第五章*" = True Or i.Range Like "第六章*" = True Or i.Range Like "第七章*" = True Or i.Range Like "第八章*" = True Or i.Range Like "第九章*" = True Or i.Range Like "第十章*" = True Or i.Range Like "第十一章*" = True Or i.Range Like "第十二章*" = True Or i.Range Like "第十三章*" = True Or i.Range Like "第十四章*" = True Or i.Range Like "第十五章*" = True Or i.Range Like "第十六章*" = True Or i.Range Like "第十七章*" = True Or i.Range Like "第十八章*" = True Or i.Range Like "第十九章*" = True Or i.Range Like "第二十章*" = True Then
CheckP = 11
ElseIf i.Range Like "第一节*" = True Or i.Range Like "第二节*" = True Or i.Range Like "第三节*" = True Or i.Range Like "第四节*" = True Or i.Range Like "第五节*" = True Or i.Range Like "第六节*" = True Or i.Range Like "第七节*" = True Or i.Range Like "第八节*" = True Or i.Range Like "第九节*" = True Or i.Range Like "第十节*" = True Or i.Range Like "第十一节*" = True Or i.Range Like "第十二节*" = True Or i.Range Like "第十三节*" = True Or i.Range Like "第十四节*" = True Or i.Range Like "第十五节*" = True Or i.Range Like "第十六节*" = True Or i.Range Like "第十七节*" = True Or i.Range Like "第十八节*" = True Or i.Range Like "第十九节*" = True Or i.Range Like "第二十节*" = True Then
CheckP = 2
ElseIf InStr(Mystr, ActiveDocument.Range(i.Range.Start, i.Range.Start + 1)) > 0 Then
CheckP = 3
ElseIf i.Range Like "[#]" Or i.Range Like "关键字:*" = True Or i.Range Like "关键词:*" = True Or i.Range Like "Key words:*" = True Then
CheckP = 4
ElseIf i.Range Like "图#*" = True Then
CheckP = 5
ElseIf i.Range = InlineShapes Then
CheckP = 6
ElseIf i.Range Like "目录?" = True Then
CheckP = 7
ElseIf i.Range Like "?目录?" = True Then
CheckP = 17
Else
CheckP = 9
End If
End Function
其中FontType(p, Fp)和 PFormatType(p, Pp)会返回p级别应该有的段落和文字格式。。。
在写一个word段落格式自动检查的代码,一级标题二级标题可以通过检测段首的字符检测出来,其余的为正文,但是遇到一个问题,不知道怎么判断当前段落是不是图片或目录,这样会导致检查的结果有问题,一遇到图片和目录就会使检测结果出错。请问一下在Word VBA里该怎样判定当前段落是图片或是目录的一部分。。十分感谢!
现有的识别检查代码:
Function CheckPForm(p As Integer, i As Paragraph) As String
'根据段落级别,和现有段落格式进行比对,以进行格式效验
Dim cs As String
Dim ch As Integer
Dim Fp As Font
Set Fp = New Font
Dim Pp As ParagraphFormat
Set Pp = New ParagraphFormat
Dim myRange As Range '获得当前段落的索引
Set myRange = i.Range
myRange.SetRange 0, myRange.End
ch = myRange.Paragraphs.Count
cs = ""
If i.Range.Font.NameFarEast = FontType(p, Fp).NameFarEast Then '检查中文字体是否正确
Else
cs = cs + "段落" + Str(ch) + "中文字体不正确!" + Chr(10)
End If
If i.Range.Font.NameAscii = FontType(p, Fp).NameAscii Then '检查西文字体是否正确
Else
cs = cs + "段落" + Str(ch) + "西文字体不正确!" + Chr(10)
End If
If i.Range.Font.Size = FontType(p, Fp).Size Then '检查字体大小
Else
cs = sc + "段落" + Str(ch) + "字体大小不正确!" + Chr(10)
End If
If i.Range.Font.Bold = FontType(p, Fp).Bold Then '检查字体加粗设置
Else
cs = cs + "段落" + Str(ch) + "字体加粗设置不正确!" + Chr(10)
End If
If i.Range.Font.Italic = FontType(p, Fp).Italic Then '检查字体斜体设置
Else
cs = cs + "段落" + Str(ch) + "字体斜体设置不正确!" + Chr(10)
End If
If i.Range.ParagraphFormat.OutlineLevel = PFormatType(p, Pp).OutlineLevel Then '大纲级别检查
Else
cs = cs + "段落" + Str(ch) + "大纲级别设置不正确!" + Chr(10)
End If
If i.Range.ParagraphFormat.Alignment = PFormatType(p, Pp).Alignment Then '对齐方式设置检查
Else
cs = cs + "段落" + Str(ch) + "对齐方式设置不正确!" + Chr(10)
End If
CheckPForm = cs
End Function
Public Function CheckP(i As Paragraph)
'根据每个段落开头的字段判断该段落的级别
Dim Mystr As String
Mystr = "一二三四五六七八九"
If i.Range Like "摘要?" = True Or i.Range Like "Abstract?" = True Or i.Range Like "摘 要?" = True Or i.Range Like "结束语?" = True Or i.Range Like "致谢?" = True Or i.Range Like "参考文献*" = True Then
CheckP = 0
ElseIf i.Range Like "?摘要?" = True Or i.Range Like "?摘 要?" = True Or i.Range Like "?Abstract?" = True Or i.Range Like "?结束语?" = True Or i.Range Like "?致谢?" = True Or i.Range Like "?参考文献*" = True Then
CheckP = 10
ElseIf i.Range Like "第一章*" = True Or i.Range Like "?第二章*" = True Or i.Range Like "?第三章*" = True Or i.Range Like "?第四章*" = True Or i.Range Like "?第五章*" = True Or i.Range Like "?第六章*" = True Or i.Range Like "?第七章*" = True Or i.Range Like "?第八章*" = True Or i.Range Like "?第九章*" = True Or i.Range Like "?第十章*" = True Or i.Range Like "?第十一章*" = True Or i.Range Like "?第十二章*" = True Or i.Range Like "?第十三章*" = True Or i.Range Like "?第十四章*" = True Or i.Range Like "?第十五章*" = True Or i.Range Like "?第十六章*" = True Or i.Range Like "?第十七章*" = True Or i.Range Like "?第十八章*" = True Or i.Range Like "?第十九章*" = True Or i.Range Like "?第二十章*" = True Then
CheckP = 1
ElseIf i.Range Like "?第一章*" = True Or i.Range Like "第二章*" = True Or i.Range Like "第三章*" = True Or i.Range Like "第四章*" = True Or i.Range Like "第五章*" = True Or i.Range Like "第六章*" = True Or i.Range Like "第七章*" = True Or i.Range Like "第八章*" = True Or i.Range Like "第九章*" = True Or i.Range Like "第十章*" = True Or i.Range Like "第十一章*" = True Or i.Range Like "第十二章*" = True Or i.Range Like "第十三章*" = True Or i.Range Like "第十四章*" = True Or i.Range Like "第十五章*" = True Or i.Range Like "第十六章*" = True Or i.Range Like "第十七章*" = True Or i.Range Like "第十八章*" = True Or i.Range Like "第十九章*" = True Or i.Range Like "第二十章*" = True Then
CheckP = 11
ElseIf i.Range Like "第一节*" = True Or i.Range Like "第二节*" = True Or i.Range Like "第三节*" = True Or i.Range Like "第四节*" = True Or i.Range Like "第五节*" = True Or i.Range Like "第六节*" = True Or i.Range Like "第七节*" = True Or i.Range Like "第八节*" = True Or i.Range Like "第九节*" = True Or i.Range Like "第十节*" = True Or i.Range Like "第十一节*" = True Or i.Range Like "第十二节*" = True Or i.Range Like "第十三节*" = True Or i.Range Like "第十四节*" = True Or i.Range Like "第十五节*" = True Or i.Range Like "第十六节*" = True Or i.Range Like "第十七节*" = True Or i.Range Like "第十八节*" = True Or i.Range Like "第十九节*" = True Or i.Range Like "第二十节*" = True Then
CheckP = 2
ElseIf InStr(Mystr, ActiveDocument.Range(i.Range.Start, i.Range.Start + 1)) > 0 Then
CheckP = 3
ElseIf i.Range Like "[#]" Or i.Range Like "关键字:*" = True Or i.Range Like "关键词:*" = True Or i.Range Like "Key words:*" = True Then
CheckP = 4
ElseIf i.Range Like "图#*" = True Then
CheckP = 5
ElseIf i.Range = InlineShapes Then
CheckP = 6
ElseIf i.Range Like "目录?" = True Then
CheckP = 7
ElseIf i.Range Like "?目录?" = True Then
CheckP = 17
Else
CheckP = 9
End If
End Function
其中FontType(p, Fp)和 PFormatType(p, Pp)会返回p级别应该有的段落和文字格式。。。
作者: zeilrao 发布时间: 2011-05-12
各位大虾。。。。

作者: zeilrao 发布时间: 2011-05-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28