Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3222|回复: 7

[VBA] 003-找出错误发送到开发者邮箱-疑难千寻千解丛书(VBA)

[复制链接]
发表于 2011-1-6 14:06 | 显示全部楼层 |阅读模式
ET疑难千寻千解丛书之EXCEL2010编程与实践
罗刚君 章兰新 黄朝阳 编著

疑难3
如何找出错误语句及获取错误原因并发送到开发者邮箱
如果程序中有语法错误,如何找到错误语句?如果自己开发的程序在客户使用时产生错误,如何让程序获取错误原因并将其发送到程序开发者邮箱?
è解决方案
对于出错语句,VBA有内置调试工具,可以自行定位出错语句;也可以通过设置VBE选项让VBE自动识别错误函数或者方法;对于语法错误造成的错误信息则可以利用error函数来捕捉。最后使用API函数ShellExecute调用邮件程序将错误信息反馈到开发者邮箱。
í操作方法
对于有语法错误的语句,例如函数或者方法的单词拼写错误,可以通过选项设置让VBA自动查找错误。步骤如下:
步骤1
选择菜单“工具”→“选项”,打开“设置”对话框。
步骤2
在“编辑器”选项卡中选择“自动语法检测”,表示运行时让VBA检查代码是否存在语法错误,及时将错误反馈给用户。
步骤3
进入“通用”选项卡,将“错误捕获”设置为第三项,表示忽略代码中处理过的、允许出错的语句。在特殊情况下,会故意让代码产生错误。
步骤4
按【F5】键运行有语法错误的代码,如图:
其中“msgbox”函数拼写错误,VBA会自动报告函数未定义,同时选定该函数;而运行如
的代码同样因“Activate”拼写错误而产生提示。
步骤5
对于以下过程,如果工作簿中不存在“Sheet4”工作表,那么代码正确的前提下运行代码后仍然会产生错误:

  1. Sub 提取工作表名()
  2.   MsgBox Sheet4.Name
  3. End Sub
复制代码
将以上运行时错误发送到开发者邮箱,可以通过以下方式改造代码:


  1. '声明API,用于调用邮件程序
  2. Private Declare Function ShellExecute Lib "shell32.dll" Alias "Shell ExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
  3. Sub 提取工作表名()
  4.   On Error Resume Next '错误时继续执行
  5.   MsgBox sheet4.Name
  6.   If Err <> 0 Then '如果有错误则向作者发送信息,包括日期、用户名、程序名和错误信息
  7.     Dim MyMail As String
  8.     MyMail = "mailto:excelbbx@163.com?subject=反馈&body=程序“提取工作表名”出错,类型为“" & Error(Err.Number) & "”%0A" + Space(20) + "用户:" + Application.UserName & "%0A" + Space(20) & Date
  9.     ShellExecute 0&, vbNullString, MyMail, vbNullString, vbNullString, 1
  10.   End If
  11. End Sub
复制代码
步骤6
当执行以上过程后,如果发生错误则会自动打开如所示的邮件窗口。单击“发送”按钮后即可将信息反馈给程序开发者。

=============================
上摘自《EXCEL2010编程与实践》

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2011-1-6 14:06 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-11 16:40 | 显示全部楼层
回复

使用道具 举报

发表于 2011-1-11 17:21 | 显示全部楼层
学习下                              
回复

使用道具 举报

发表于 2011-1-11 17:56 | 显示全部楼层
占个位子,学习
回复

使用道具 举报

发表于 2011-4-9 21:39 | 显示全部楼层
{:011:}{:011:}{:011:}{:011:}
回复

使用道具 举报

发表于 2012-6-28 14:41 | 显示全部楼层
学习下哦哦
回复

使用道具 举报

发表于 2012-6-28 14:41 | 显示全部楼层
学习下哦哦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-1 21:02 , Processed in 0.262044 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表