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

VBScript打开Excel文件,然后执行另存为,excel,vbscript,vba,Excel,Vbscript,Vba,我正在尝试编写一个vba脚本,自动打开excel文件,将某个单元格中的日期增加一天,然后等待2分钟,等待所有其他字段填充当天的信息。填充另一个字段后,我希望脚本关闭文件并保存为运行脚本的日期。我打算将此脚本添加到windows任务管理器中,以便每天凌晨2点运行。到目前为止,我有类似的东西 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("c:\Users\dr\D

我正在尝试编写一个vba脚本,自动打开excel文件,将某个单元格中的日期增加一天,然后等待2分钟,等待所有其他字段填充当天的信息。填充另一个字段后,我希望脚本关闭文件并保存为运行脚本的日期。我打算将此脚本添加到windows任务管理器中,以便每天凌晨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过程运行此过程,则无需创建Excel的新实例:

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

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

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过程运行此过程,则无需创建Excel的新实例:

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

脚本需要打开工作簿,然后更新日期,计算(“填充其他单元格”),保存并关闭。我的建议是不要使用Sleep,只需强制工作簿进行计算,然后关闭它即可。就像@iDevlop所说的:改变B3中的公式是不必要的。实际显示Excel应用程序也是如此

以下操作将打开工作簿,重新计算(因此B3值将是今天的日期,工作簿的其余部分将相应地计算),然后保存:

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
的信息,请参见您的脚本需要打开工作簿,然后更新日期,计算(“填充其他单元格”),保存并关闭。我的建议是不要使用Sleep,只需强制工作簿进行计算,然后关闭它即可。就像@iDevlop所说的:改变B3中的公式是不必要的。实际显示Excel应用程序也是如此

以下操作将打开工作簿,重新计算(因此B3值将是今天的日期,工作簿的其余部分将相应地计算),然后保存:

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
的信息,请参见

您到底在哪里遇到问题?您到底在哪里遇到问题?谢谢您的帮助。我收到一个错误行10字符56错误无效字符代码800A0408源Microsoft VBScript复制错误。另外,对于“另存为”功能,如何添加类似test.day.xlms的内容对于“另存为”,请参见。剩下的,看看我的编辑你能告诉我如何在脚本完成睡眠后添加到脚本中我希望脚本选择整个工作表做一个复制并作为“值”的特殊值过去。我仍然无法使saveas函数工作。我希望将文件另存为路径“c:\Users\dr\Desktop\test today.xlsx”),我的大部分代码都正常工作。无论我做什么,我都无法使objWorkbook.SaveAs方法正常工作。我想将文件保存在一个特定位置,使用名称+日期或仅使用日期,因为名称无关紧要。它应该是xlsx文件格式。请提供帮助。@DannyR XLSX是不带宏的格式,工作表将不带宏保存。要实现这一点,只需将
,52
放在
SaveAs
行的末尾,或者在名称前面添加一个完整路径。你有错误吗?哪一个?谢谢你的帮助。我收到一个错误行10字符56错误无效字符代码800A0408源Microsoft VBScript复制错误。另外,对于“另存为”功能,如何添加类似test.day.xlms的内容对于“另存为”,请参见。剩下的,看看我的编辑你能告诉我如何在脚本完成睡眠后添加到脚本中我希望脚本选择整个工作表做一个复制并作为“值”的特殊值过去。我仍然无法使saveas函数工作。我希望将文件另存为路径“c:\Users\dr\Desktop\test today.xlsx”),我的大部分代码都正常工作。无论我做什么,我都无法使objWorkbook.SaveAs方法正常工作。我想将文件保存在一个特定位置,使用名称+日期或仅使用日期,因为名称无关紧要。它应该是xlsx文件格式。请提供帮助。@DannyR XLSX是不带宏的格式,工作表将不带宏保存。要实现这一点,只需将
,52
放在
SaveAs
行的末尾,或者在名称前面添加一个完整路径。你有错误吗?哪一个?