刷新Windows Server上的Excel数据连接

时间:2015-07-02 09:27:58

标签: excel-vba sas windows-server data-connections vba

我在Windows服务器上运行自动数据作业,每天输出一个SAS数据集。最重要的是,我通过Excel的本地数据提供程序连接了Excel报告。

我的问题是,数据连接需要由安装在其PC上的SAS手动刷新。我曾尝试编写一段SAS代码,在服务器上打开Excel文件,然后在关闭和保存之前触发一段进行刷新的VBA。如果我登录到服务器,这非常有效。但是,如果没有人登录,它似乎没有用。我相信这与活跃的用户会话有关。

更新

我用来连接Excel的本地数据源的过程如下所示:

  1. 数据连接向导
  2. 从OLE DB提供程序中选择SAS本地数据提供程序
  3. 将路径添加到我的SAS数据集作为数据源
  4. 选择我的源表并创建数据透视报告
  5. 有没有办法做这样的事情?

1 个答案:

答案 0 :(得分:2)

如果要在无人值守的情况下运行Excel,因此没有登录交互式用户,可以使用Windows服务执行此操作。您必须确保Excel的某些设置,以及启动Excel的重要性。

请注意Microsoft不支持,甚至建议您执行此类操作。 Excel是一个客户端软件,它与一个易于维护运行的软件正好相反。阅读这篇关于该主题的优秀文章Considerations for server-side Automation of Office。即使有点老(谈论Office 2003),它仍然是最先进的。

请考虑以下条件:

  • 您无法使用系统或网络帐户,您必须让Windows服务在至少具有excel的帐户下运行一次。这不能用命名的(因为它们不能用作交互式用户)来完成。
  • Excel必须至少打开一次,用户将运行Windows服务帐户。您必须配置dcom设置,打开vba一次以初始化它,并且很可能设置一些设置,例如" trust vba model"能够以编程方式访问Excel
  • 最后但并非最不重要的是,在启动Excel时,您必须通过加载用户配置文件来启动它。 c#中的Process.Start方法只允许将布尔值设置为true。

这样做,Excel应该可以正常启动并更新与VBA的数据连接。