如何禁用VBA中的"选择数据源窗口"

时间:2015-09-28 12:38:02

标签: excel vba excel-vba

我有一个启用宏的excel文件,用于将数据从excel上传到数据库。 excel中有一个按钮来运行此代码。当我运行代码时,它会弹出一个窗口"选择数据源"。有没有人如何防止这种情况爆发。

谢谢

可悲的是,作为初学者,我无法提供图片,所以我会解释。

单击按钮时。打开一个名为"选择数据源"的窗口。有三个选项dBASE文件,Excel文件,MS Access数据库。我需要选择其中一个并继续。对我而言,它很出色,所以我点击这个然后按好。然后它可以选择允许我选择工作簿。有没有办法预先做到这一点,以便我不会看到这个窗口。

下面显示了代码,它给出了这个问题。

Sub Collect_campaigns()
Dim qryCampaigns As String
Application.ScreenUpdating = False
qryCampaigns = "SELECT * FROM test.tbl_test;"
Worksheets("Campaigns").Visible = True

Sheets("Campaigns").Select
Range("A:F").Select
Selection.Clear
Range("A1").Select
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
    "ODBC;DSN=TEST_DATASOURCE;", Destination:=Range("$A$1")).QueryTable
.CommandText = qryCampaigns
.Refresh BackgroundQuery:=False
 End With

2 个答案:

答案 0 :(得分:1)

With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"ODBC;DSN=TEST_DATASOURCE;", Destination:=Range("$A$1")).QueryTable

正如您在上面的代码中看到的,您的宏引用了名为TEST_DATASOURCE的ODBC DataSource。我只能假设您已从其他计算机复​​制此文件,如果是这样,您还需要在计算机上创建相同的ODBC数据源。

如果您的计算机正在运行Windows,则应检查"控制面板 - >管理工具 - >数据源(ODBC)"。

答案 1 :(得分:0)

弹出窗口是一种礼貌的方式,告诉您无法将数据源"ODBC;DSN=TEST_DATASOURCE;"与可用的ODBC数据源进行协调。我认为,你的最小化方法是一个很好的方法 - 不是将整个连接字符串放在其中,而只是名称。它允许MS Query根据您的ODBC连接设置填写空白。

虽然不太可能,但它也可能与密码有关,其中ODBC连接拒绝在嵌入式密码中尝试使用。既然你说你的数据源是Excel,那我就把它放到“不太可能”的数据源中。类别...除非您的数据源不是真正的Excel,而且您正在拉扯我们众所周知的一切。

我的建议是应用良好的编程习惯:欺骗和懒惰

  1. 录制宏
  2. 像在Excel中一样创建表格,数据 - >从其他来源 - > MS查询(或其他)
  3. 停止宏
  4. 现在在干净的工作簿上运行宏代码 - 运气好的话它会正常运行。然后,根据您的需要去除掉一些绒毛代码,并继续重新测试它,直到它破裂。