我有一个启用宏的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
答案 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,而且您正在拉扯我们众所周知的一切。
我的建议是应用良好的编程习惯:欺骗和懒惰
现在在干净的工作簿上运行宏代码 - 运气好的话它会正常运行。然后,根据您的需要去除掉一些绒毛代码,并继续重新测试它,直到它破裂。