QueryTable CommandText未找到

时间:2016-02-10 14:24:07

标签: macos odbc excel-vba-mac excel-2016

我正在构建一个基于Excel的工具,必须兼容Windows和Mac。此工具需要从SQL Server中提取数据并将数据推送到SQL Server。我已经编写并测试了一种在Windows中运行的方法,并且可以在Mac as described here中使用(尽管该链接与Excel 2011有关):

"Error starting the Microsoft Azure Recovery Services Agent Setup Wizard"

此方法在Excel 2016 for Mac中不起作用。实际上,当我记录在Mac上添加连接的过程时,QueryTables.Add方法甚至不会显示Connection或SQL参数......

我没有以编程方式创建表,而是认为解决方法可能是手动创建表,然后根据需要以编程方式更改表的CommandText(针对不同的参数等)。但是当我尝试访问QueryTable对象的CommandText属性时,Mac VBEditor告诉我它无法找到该成员!

有没有人在Excel 2016 for Mac中以编程方式成功创建ODBC QueryTables,还是Excel 2016的另一个缺点?

1 个答案:

答案 0 :(得分:0)

当我遇到你的问题,希望有人回答这个问题时,我很想找到解决方法。我刚刚发现了一个解决方案。我的问题似乎与你的问题类似,所以也许我的解决方案会帮助你:

我无法在VBA中使用QueryTables.Add或CommandText,但我能够手动创建表格,然后使用Excel工作表中的数据作为参数。
  我通过单击“新数据库查询”>“从数据库”手动创建了ODBC连接,您可能知道如何操作。我将SQL输入到Microsoft Query窗口中:

    SELECT DISTINCT WIN
  FROM RETAIL.OFFER
  WHERE WIN LIKE 'XS%'
  AND WIN NOT LIKE 'XS92500' 
  AND WIN NOT LIKE 'XS%a'
  AND TITLE = 'The Binge'

我是SQL的新手,所以可能不是很漂亮,但它有效。但是,我需要将标题作为来自电子表格中的单元格的参数,而不是每次都必须进入并手动更新SQL。我可以通过进入Connections>属性>定义>编辑查询并将SQL更改为此来完成此操作:

    SELECT DISTINCT WIN
  FROM RETAIL.OFFER
  WHERE WIN LIKE 'XS%'
  AND WIN NOT LIKE 'XS92500' 
  AND WIN NOT LIKE 'XS%a'
  AND TITLE = ?

注意:它只在我实际按下“编辑查询”按钮时才有效,如果我在“定义”窗口中对其进行了编辑,它会将所有'更改为曲线撇号。   Excel然后提示我选择一个参数来替换?在SQL中。您可以在电子表格中选择一个单元格,也可以为参数输入任何其他字符串。如果需要,您还可以返回连接并编辑参数   现在,我只使用VBA宏刷新所有连接并将数据从单元格传递到查询中。这适用于我的用例,抱歉,如果您已经知道以这种方式创建参数并且您需要使用VBA。我无法让我的VBA在我的Mac上工作,即使它在我的电脑上完美运行。希望这对那里的人有所帮助!