【问题标题】:How to disable the "Select Data source window in VBA"如何禁用“在 VBA 中选择数据源窗口”
【发布时间】:2015-09-29 06:00:46
【问题描述】:

我有一个启用宏的 excel 文件,用于将数据从 excel 上传到数据库。 excel中有一个按钮可以运行此代码。当我运行代码时,它会弹出一个窗口“选择数据源”。有谁知道如何防止这种情况出现。

谢谢

遗憾的是,作为初学者,我无法提供图片,所以我会解释一下。

单击按钮时。打开一个名为“选择数据源”的窗口,其中包含三个选项 dBASE 文件、Excel 文件、MS Access 数据库。我需要选择其中之一并继续。对我来说,它是 excel,所以我单击它并按 OK。然后它可以让我选择工作簿。有没有办法预先做这个,这样我就看不到这个窗口了。

代码如下所示,就是这个问题。

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 的东西吗?这是我能用语言解释的最好的了。这个系统不允许我上传我认为需要不是一个好主意的图片,因为初学者发现很难解释,而且它只会使帖子变长并且视觉表现更好。
  • @ArranRai,在运行宏之前,按键盘上的 Alt+F11,这将打开 Visual Basic 窗口,您可以在其中看到宏的代码。您应该搜索“选择数据源”的代码,然后复制包含它的段并将其粘贴到您的问题下方。没有它,我们就不可能知道宏在后台做了什么。
  • @ArranRai 您看到的窗口是由我们这里没有人看到的自定义代码引起的。如果我们可以看到该代码,我们可以告诉您如何调整它,以便自动选择“工作簿”并且不打开任何窗口。由于您是唯一可以访问工作簿的人,因此您需要找到代码并将其粘贴到此处,以便人们可以帮助您。遵循robotik 的建议将帮助您做到这一点。目前这个问题无法回答。

标签: vba excel


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

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

如果您的机器运行的是 Windows,您应该检查“控制面板-->管理工具-->数据源(ODBC)”。

【讨论】:

  • OP 并不完全清楚,但我得到的印象是他说他在他的机器上运行它时得到了这个对话框。我知道你的答案是什么,但我认为他还没有到他在其他机器上部署它的地步——可能是错的。我对他的问题的理解存在一些漏洞
  • 我在我的机器上复制了一个问题,我创建了只有宏代码的空 excel 文件:“With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _"ODBC;DSN=TEST_DATASOURCE ;", Destination:=Range("$A$1")).QueryTable .CommandText = qryCampaigns .Refresh BackgroundQuery:=False End With" 我得到了相同的屏幕,所以要摆脱它,需要创建正确的 ODBC 数据源就是这样。你可以自己试试,很简单。
【解决方案2】:

弹出窗口是一种礼貌的方式,告诉您它无法将您的数据源"ODBC;DSN=TEST_DATASOURCE;" 与可用的 ODBC 数据源相协调。我认为,您的简约方法是一种很好的方法——不要放入整个连接字符串,而只是放入名称。它允许 MS Query 根据您的 ODBC 连接设置填写空白)。

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

我的建议是应用良好的编程习惯:作弊和偷懒

  1. 录制宏
  2. 像往常一样在 Excel 中创建表格,Data->From Other Sources->MS Query(或其他)
  3. 停止宏

现在在干净的工作簿上运行宏代码——如果运气好的话,它会运行良好。然后,去掉你认为合适的一些绒毛代码,并继续重新测试它,直到它崩溃。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多