2016-02-01 254 views
0

我想寫一個vba腳本來自動打開一個excel文件增加一天在一個特定的單元格,然後等待2分鐘,所有其他字段填充信息從當天開始。一旦填充了其他字段,我希望腳本關閉文件並保存爲腳本運行的那一天。我將把這個腳本添加到Windows任務管理器,以便每天凌晨2點運行。到目前爲止,我有這樣的事情。VBScript打開一個Excel文件,然後做一個另存爲

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」) 
+0

你究竟在哪裏遇到問題? – PankajR

回答

1

沒有十分的把握,充分了解你的問題,但我已經看到一個或2修復:

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 
+0

感謝您的幫助。我收到錯誤 第10行 字符56 錯誤無效字符 代碼800A0408 源Microsoft VBScript copilation錯誤。 另外爲另存爲功能如何添加類似test.day.xlms –

+0

對於SaveAs,請參閱http://stackoverflow.com/a/25214233/78522。 其餘的,看看我的編輯 –

+0

你能告訴我如何在腳本完成睡眠之後添加到腳本中嗎?我希望腳本選擇整個工作表做一個副本並將其作爲「值」的特殊值。我仍然無法使saveas函數正常工作。我希望文件保存爲路徑「c:\ Users \ dr \ Desktop \ test-today.xlsx」) –

0

腳本需要打開工作簿,然後更新一天,計算(「填充其他單元格」),保存並關閉。我的建議是不要爲此使用睡眠,但只需強制工作簿計算並關閉它。就像@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看到https://msdn.microsoft.com/EN-US/library/office/ff195517.aspx

相關問題