我有代码从" C10"中获取数据库服务器名称。 excel的单元格,从单元格中获取值后,它连接到服务器,然后执行存储过程。
我的服务器名称在" C10" cell:LE64 \ SQL2012
Option Explicit
Sub Button1_Click()
Call TS
End Sub
Sub TS()
'Variable Declaration
Dim OutPut As Integer
If MsgBox("Do you want to take the Snapshot?", vbQuestion + vbYesNo, "MS Excel") = vbYes Then
Dim con As Connection
Dim rst As Recordset
Dim strConn As String
Dim strDatabase As String
Dim myRange As Range
Dim objWorkbook As Excel.Workbook
Dim objWorkSheet As Excel.Worksheet
Set objWorkSheet = ThisWorkbook.Sheets("MS Excel")
objWorkSheet.Activate
Set con = New Connection
Let strDatabase = objWorkSheet.Range("C10").Value
strConn = "Provider=SQLOLEDB;"
strConn = strConn & "Data Source= " & strDatabase & ";"
strConn = strConn & "Initial Catalog=Warehouse;"
strConn = strConn & "Integrated Security=SSPI;"
con.Open strConn
Set rst = con.Execute("Exec [dbo].[LoadSP]")
MsgBox "Snapshot successfully taken", vbInformation, "MS Excel"
con.Close
End If
End Sub
但是当我更改单元格的值时," C10"略微喜欢" LE64 \ SQL201"它无法连接到服务器并在下面抛出错误:
" SQL Server不存在或访问被拒绝"在消息框中
我想在另一个消息框中处理并显示上述错误,突出显示"无效的数据库名称"如果在从C10单元格中获取值后无法连接到正确的数据库服务器。
我查看了网络上的不同错误处理机制,但无法实现它。
任何人都可以帮我添加一个try catch块到我的代码或任何错误处理机制来处理上述问题。
答案 0 :(得分:3)
看看这个示例代码..
Sub MySub()
On Error GoTo ErrorHandler
. . .
Exit Sub
ErrorHandler:
. . .
Resume <or Exit Sub>
. . .
End Sub
这是处理错误最简单的方法..
如需更多提前选项,请参阅Source