VBA数据层error handling

我有一些传统的Excel文件,大量调用存储过程和数据库连接,所有这些都是用旧的方式完成的。

因为在VBA中没有像.NET一样的try-catch-finally的概念,是否有任何最佳实践来申请有一个更坚实的数据访问层? 我想就如何打开连接,执行需要一些参数的存储过程,然后在任何成功或错误的情况下,closures连接和释放资源,有一个很好的例子。

在VBA中,你必须使用On Error块:它的混乱,但它的作品

On Error Goto ConnectionFail ' open connection on Error GoTo 0 ... On Error GoTo QueryFail ' execute querys etc on Error goto 0 ... Cleanup: ' close connection destroy objects etc Exit Sub ConnectionFail On Error GoTo 0 ' handle failure GoTo Cleanup QueryFail On Error GoTo 0 ' handle failure GoTo Cleanup End Sub 

我现在实际上使用了一种不同的方法,我创build了一个.NET托pipe的数据层,并将其导出为COM类,按照这里的说明进行操作:以这种方式从VBA调用.NET,我必须将COM程序集与Excel一起部署和注册文件,我承认这有点痛苦,但至less我可以用适当的方式处理数据访问,并使用C#,ADO.NET等…