HOWTO:通过 VBA 在 FrontPage 2003 中建立自定义 HTML 代码检查程序
2006-02-13 21:59
495 查看
在 FrontPage 中提供了 HTML 代码检查功能,它可以方便提高您网页的辅助功能(主要是检查您的网页是否符合全部人群浏览,详细信息请参阅 FrontPage 帮助)。同样的,我们也可以利用 VBA 轻松的自定义一套自己的 HTML 规则检测程序。(此程序只适用于 FrontPage 2003 版本,因为对于 SearchInfo 其它版本不支持)
我们在模块中建立一个过程,这是我们这套自定义程序的主体:
Public Function CustomSearchInfo(ByVal strFindTxt As String, ByVal autoSelect As Boolean, ByVal msgFound As String, ByVal msgNotFound As String) As String
'02/13/2006 陈炜 (谨以此程序纪念我和她分手一周年)
On Error GoTo CannotDo
'--------
'变量声明
'--------
Dim objSearchInfo As SearchInfo
Dim objRange As IHTMLTxtRange
Dim objDoc As FPHTMLDocument
Dim bIsExs As Boolean
'-----------------------------------------------------------------------------
'对变量的赋值
'注:对于 Set objRange = objDoc.Selection.createRange 这句赋值语句,如果在代
'码页内修改了 HTML 代码并且没有保存文件的话,就会出现权限访问问题(错误代码70)。
'对于 Set objDoc = ActiveDocument 这句赋值语句,如果在无窗口模式下运行宏,就会
'出现变量无法赋值的问题(错误代码91)。
'-----------------------------------------------------------------------------
Set objDoc = ActiveDocument
Set objSearchInfo = Application.CreateSearchInfo
Set objRange = objDoc.Selection.createRange
objSearchInfo.Find = strFindTxt
'使用 HTML 标记查询方法(该方法属于 FpSearchAction)
objSearchInfo.Action = fpSearchFindTag
'这里可以使用 objSearchInfo.Options = (FpSearchOptions 中的方法), 来设置搜索选项
'如区分大小写: objSearchInfo.Options = fpSearchMatchCase
bIsExs = objDoc.Find(objSearchInfo, Null, objRange)
If bIsExs = True Then
MsgBox msgFound, vbApplicationModal + vbInformation, "自定义 HTML 检测"
If autoSelect = True Then objRange.Select
Else
MsgBox msgNotFound, vbApplicationModal + vbExclamation, "自定义 HTML 检测"
End If
'返回指定的搜索到的所有文本内容: CustomSearchInfo = objRange.Text
'返回指定的搜索到的所有 HTML 标记内容
'如果中途出现错误那么会返回空值
CustomSearchInfo = objRange.htmlText
Exit Function
CannotDo:
If Err.Number = 70 Then
MsgBox "如果在代码页内修改了 HTML 代码并且没有保存文件的话,就会出现权限访问问题。" & vbNewLine & "请保存后再重新运行此宏。", vbApplicationModal + vbExclamation, "错误"
ElseIf Err.Number = 91 Then
MsgBox "如果您在无窗口情况下下运行此宏命令,那么会出现变量无法赋值的错误。(但不排除会有其他变量问题出现)" & vbNewLine & "请打开至少一个网页后再运行此宏。", vbApplicationModal + vbExclamation, "错误"
Else
If MsgBox("[ " & Err.Number & " ] " & Err.Description & vbNewLine & "发生如上错误,是否重试?", vbApplicationModal + vbCritical + vbRetryCancel, "错误") = vbRetry Then Resume
End If
End Function
对于以上过程中的代码我已在相关部分标写了注释,如仍有不解之处或错误的地方请予以指出,我会及时加以改正。下面我们来建立一个单独的宏(也可以插入到您的宏中),并调用此代码:
Sub MySearchInfo()
'这里使用 MsgBox 返回函数运行结果
MsgBox CustomSearchInfo("center", True, "已找到预定的旧的 HTML 标记", "没有找到预定的标记")
End Sub
这样我们便可以轻松的通过建立菜单项或工具栏按钮来直接调用函数了。有关问题请参阅我关于如何在 FrontPage 中建立宏并指派到菜单项的文章( http://blog.csdn.net/frontgoggle/archive/2006/02/11/597023.aspx )。
最后要提到的是对于 CustomSearchInfo 函数及其参数的一些说明:
strFindTxt 字符串类型,为想要搜索的 HTML 标记,如搜索 <center>...</center>,只需键入 center 即可。
autoSelect 布尔值,表示是否自动选中标记(自动选定:True,不自动选定:False)
msgFound 字符串类型,表示当寻找到相关字符串时所弹出的对话框中所显示的内容
msgNotFound 字符串类型,表示当未寻找到相关字符串时所弹出的对话框中所显示的内容
该函数成功运行后会返回包含相关标记和标记内容的字符串,可以被 MsgBox 等函数调用,也可赋值给 TextBox.Text。
我们在模块中建立一个过程,这是我们这套自定义程序的主体:
Public Function CustomSearchInfo(ByVal strFindTxt As String, ByVal autoSelect As Boolean, ByVal msgFound As String, ByVal msgNotFound As String) As String
'02/13/2006 陈炜 (谨以此程序纪念我和她分手一周年)
On Error GoTo CannotDo
'--------
'变量声明
'--------
Dim objSearchInfo As SearchInfo
Dim objRange As IHTMLTxtRange
Dim objDoc As FPHTMLDocument
Dim bIsExs As Boolean
'-----------------------------------------------------------------------------
'对变量的赋值
'注:对于 Set objRange = objDoc.Selection.createRange 这句赋值语句,如果在代
'码页内修改了 HTML 代码并且没有保存文件的话,就会出现权限访问问题(错误代码70)。
'对于 Set objDoc = ActiveDocument 这句赋值语句,如果在无窗口模式下运行宏,就会
'出现变量无法赋值的问题(错误代码91)。
'-----------------------------------------------------------------------------
Set objDoc = ActiveDocument
Set objSearchInfo = Application.CreateSearchInfo
Set objRange = objDoc.Selection.createRange
objSearchInfo.Find = strFindTxt
'使用 HTML 标记查询方法(该方法属于 FpSearchAction)
objSearchInfo.Action = fpSearchFindTag
'这里可以使用 objSearchInfo.Options = (FpSearchOptions 中的方法), 来设置搜索选项
'如区分大小写: objSearchInfo.Options = fpSearchMatchCase
bIsExs = objDoc.Find(objSearchInfo, Null, objRange)
If bIsExs = True Then
MsgBox msgFound, vbApplicationModal + vbInformation, "自定义 HTML 检测"
If autoSelect = True Then objRange.Select
Else
MsgBox msgNotFound, vbApplicationModal + vbExclamation, "自定义 HTML 检测"
End If
'返回指定的搜索到的所有文本内容: CustomSearchInfo = objRange.Text
'返回指定的搜索到的所有 HTML 标记内容
'如果中途出现错误那么会返回空值
CustomSearchInfo = objRange.htmlText
Exit Function
CannotDo:
If Err.Number = 70 Then
MsgBox "如果在代码页内修改了 HTML 代码并且没有保存文件的话,就会出现权限访问问题。" & vbNewLine & "请保存后再重新运行此宏。", vbApplicationModal + vbExclamation, "错误"
ElseIf Err.Number = 91 Then
MsgBox "如果您在无窗口情况下下运行此宏命令,那么会出现变量无法赋值的错误。(但不排除会有其他变量问题出现)" & vbNewLine & "请打开至少一个网页后再运行此宏。", vbApplicationModal + vbExclamation, "错误"
Else
If MsgBox("[ " & Err.Number & " ] " & Err.Description & vbNewLine & "发生如上错误,是否重试?", vbApplicationModal + vbCritical + vbRetryCancel, "错误") = vbRetry Then Resume
End If
End Function
对于以上过程中的代码我已在相关部分标写了注释,如仍有不解之处或错误的地方请予以指出,我会及时加以改正。下面我们来建立一个单独的宏(也可以插入到您的宏中),并调用此代码:
Sub MySearchInfo()
'这里使用 MsgBox 返回函数运行结果
MsgBox CustomSearchInfo("center", True, "已找到预定的旧的 HTML 标记", "没有找到预定的标记")
End Sub
这样我们便可以轻松的通过建立菜单项或工具栏按钮来直接调用函数了。有关问题请参阅我关于如何在 FrontPage 中建立宏并指派到菜单项的文章( http://blog.csdn.net/frontgoggle/archive/2006/02/11/597023.aspx )。
最后要提到的是对于 CustomSearchInfo 函数及其参数的一些说明:
strFindTxt 字符串类型,为想要搜索的 HTML 标记,如搜索 <center>...</center>,只需键入 center 即可。
autoSelect 布尔值,表示是否自动选中标记(自动选定:True,不自动选定:False)
msgFound 字符串类型,表示当寻找到相关字符串时所弹出的对话框中所显示的内容
msgNotFound 字符串类型,表示当未寻找到相关字符串时所弹出的对话框中所显示的内容
该函数成功运行后会返回包含相关标记和标记内容的字符串,可以被 MsgBox 等函数调用,也可赋值给 TextBox.Text。
相关文章推荐
- 通过sap的表维护工具生成维护代码并建立自定义的TCODE
- Spring MVC代码实例系列-04:通过自定义视图(继承InternalResourceView),实现既能解析Jsp页面又能解析Html页面的目的
- HOWTO:通过 VBA 自定义 Office 助手
- 通过注册表开机运行自定义程序失败,问题检查为添加的路径错误
- 通过sap的表维护工具生成维护代码并建立自定义的TCODE
- 通过Html网页调用本地安卓(android)app程序代码
- 通过Html网页调用本地安卓app程序代码
- 微信小程序自定义多选事件的实现代码
- Unity3D 通过代码导入自定义格式地形的方法
- 检查运行更改代码后的程序
- 网易博客如何使用HTML自定义代码
- 【iOS技巧- 6 】通过代码新建一个自定义的UITableViewCell < app中的cell的高度,宽度,位置都是不一致的情况下 >
- ABAP--批量建立员工照片关联程序参考代码
- 通过程序将Visio文档 转换为html网页
- JAVA操作SSL协议,通过Socket访问Https的程序代码例子
- JAVA操作SSL协议,通过Socket访问Https的程序代码例子
- HTML--如何实现通过鼠标事件拖动页面图像(代码)
- 通过代码自定义cell(cell的高度不一致)
- 收了100元辛苦费,写了一个最简单的C#ASP.NET的3层架构例子代码,源码是通过代码生成器生成的【写程序的效率神奇的高】
- Android代码通过包名调用系统卸载程序