从Excel

时间:2016-11-22 20:06:53

标签: excel-vba vba excel

我需要检查Access数据库中是否存在查询名称...来自Excel。

我已经从Access中找到了很多方法,但Excel中没有任何方法。我宁愿让它使用后期绑定。

我正在连接数据库,然后尝试用SQL字符串打开一个记录集...如果查询不存在,则会弹出错误

Run-time error '-2147217900(80040e14)': Syntax error in FROM clause.

我需要能够在没有用户交互的情况下捕获该错误...我尝试先添加Application.DisplayAlerts = False,但这并没有停止弹出...或者我需要能够检查该查询名称的数据库。

我在函数的开头有一个On Error GoTo语句,但是永远不会被触发,因为弹出窗口只允许End或Debug ...我不希望用户能够调试..他们不知道他们在做什么......或者这个错误首先不会发生。如果它们结束,那么......错误没有得到修复,工作簿就会爆炸。

我也尝试过这个......

Dim rs As Object, oCon As Object, db As Object, qdf As Object
Dim wsImport As Worksheet
Dim sSQL As String
On Error GoTo Err_VQ

  Set wsImport = Sheets("Import")
  Set oCon = MakeConnection
  Set db = CreateObject("DAO.DBEngine.120").OpenDatabase(ThisWorkbook.Path & "\DB.accdb")
  Application.DisplayAlerts = False
  Set qdf = db.querydefs(wsImport.[H1]) '<---- Run time error on this line
  'wsImport.[H1] contains the query name

但是我仍然可以弹出run time error 3265 Item not Found in Collection ...这很好......但是如何抑制弹出?

编辑 - “很好”我的意思是这是我所期望的错误,因为查询名称不存在...但我需要知道如何抑制错误并使用它代码内部。

0 个答案:

没有答案
相关问题