VBScript打开Excel文件,然后执行另存为

我正在尝试编写一个vba脚本来自动打开一个excel文件,在某个单元格中增加一个,然后等待2分钟,让所有其他字段填充当天的信息。 一旦填充了其他字段,我希望脚本closures文件并保存为脚本运行的那一天。 我将把这个脚本添加到Windows任务pipe理器,每天凌晨2点运行。 到目前为止,我有这样的事情。

Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:\Users\dr\Desktop\test.xlsx") objExcel.Application.Visible = True objExcel.Workbooks.Add objExcel.Cells(3, 2).Value = "=today()" WScript.Sleep 120000 wb.SaveAs Format( Now(), “DD-MMM-YY”) 

不太确定完全理解你的问题,但我已经看到一个或两个修复:

 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:\Users\dr\Desktop\test.xlsx") objExcel.Application.Visible = True 'objExcel.Workbooks.Add objWorkbook.Sheets("sheetName").Cells(3, 2).Value = "=today()" WScript.Sleep 120000 objWorkbook.SaveAs "F" & format(date(), "yyyymmdd") & ".xlsm", 52 

无论如何,每天将B3中的公式改为"=Today()"是完全没有用的,因为它在前一天已经是同样的公式了。


编辑:如果您是从Excel VBA程序运行此程序,则不需要创buildExcel的新实例:

 dim sFolder as string sFolder = "c:\Users\dr\Desktop\" Set objWorkbook = Workbooks.Open(sFolder & "test.xlsx") objWorkbook.Sheets("sheetName").recalc objWorkbook.SaveAs sFolder & format(date(), "yyyymmdd") & ".xlsx" objWorkbook.Close 

您的脚本需要打开工作簿,然后更新一天,计算(“填充其他单元格”),保存并closures。 我的build议是不使用睡眠,但只是强制工作簿计算,然后closures它。 像@iDevlop说:改变B3中的公式是不必要的。 实际显示Excel应用程序也是如此。

下面打开工作簿,重新计算(所以B3值将是今天的date,工作簿的其余部分将相应计算),并保存:

 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:\Users\dr\Desktop\test.xlsx") objExcel.Calculate objWorkbook.SaveAs Format( Now(), “DD-MMM-YY”) 

有关.calculate信息,请参阅https://msdn.microsoft.com/EN-US/library/office/ff195517.aspx