2012-03-20 115 views
1

我有一个从数据库表中获取外部数据的Excel文件。我需要自动刷新文件并通过电子邮件发送。我打算使用SSIS脚本任务来运行一些VB脚本来打开文件,刷新数据,保存并关闭(显然不需要启动应用程序)。然后我将使用电子邮件任务通过电子邮件发送文件。我需要的只是刷新文件并在VB或C#中完全禁用的脚本,我必须问问任何人是否有一个脚本可以放在周围,我可以为我的文件自定义脚本任务。 我会感激任何提示! 非常感谢, 弗拉德使用SSIS脚本任务刷新Excel

+0

所以你只需要VB脚本,将打开XLS文件,刷新它并关闭它的电子邮件目的? – Amol 2012-03-21 08:51:10

+0

仅供参考,Microsoft目前建议您不要在服务器环境中自动运行Office应用程序:http://support.microsoft.com/kb/257757可以从头开始创建文件,然后通过电子邮件发送文件? http://stackoverflow.com/questions/151005/create-excel-xls-and-xlsx-file-from-c-sharp – Pondlife 2012-03-21 09:53:43

+0

为什么即使打扰SSIS?您可以将启动宏添加到打开文件时刷新数据的excel文件中。只要将文件分发给您的受众,并且每次打开文件时,宏都会自动刷新数据......假设他们可以访问网络。 – 2012-03-21 12:20:58

回答

5

希望这是你在寻找什么

' Create an Excel instance 
    Dim oExcel 
    Set oExcel = CreateObject("Excel.Application") 

' Disable Excel UI elements 
    oExcel.Visible = True 
    oExcel.DisplayAlerts = False 
    oExcel.AskToUpdateLinks = False 
    oExcel.AlertBeforeOverwriting = False 

    Set oWorkbook = oExcel.Workbooks.Open("absolute path to your file") 
    oWorkbook.RefreshAll 
    oWorkbook.Save 

    oExcel.Quit 
    Set oWorkbook = Nothing 
    Set oExcel = Nothing 
+0

太棒了,4MO1!经过小小的调整,它的工作。谢谢! – 2012-03-21 20:50:55

+0

@ user1281185:如果这是你需要的,那么你可以通过点击左边的复选标记来接受这个答案 – Amol 2012-03-22 04:07:26

+0

刚刚做过。再次感谢! – 2012-03-23 13:17:45

0

老的文章,但4M01答案已经帮了我堆。

在我的情况下,我必须打开工作簿后才能进入睡眠状态,以确保文件正确加载。

oWorkbook = oExcel.Workbooks.Open("absolute path to your file") 
Threading.Thread.Sleep(3000) 
oWorkbook.RefreshAll 

还应注意在VS 2015组不再需要。所以只需删除“设置”的代码工作。