2015-05-06 201 views
1

我在此網站上發現以下代碼「將Excel文件另存爲CSV」有什麼方法可以幫助您在特定時間自動運行此代碼(每晚11:00晚上),並保存文件名爲當前日期(hr2015-05-05),任何幫助將不勝感激。由於在特定時間運行VBA代碼

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Dim Sourcewb As Workbook 
Dim Destwb As Workbook 
Dim TempFileName As String 

With Application 
    .ScreenUpdating = False 
    .EnableEvents = False 
    .DisplayAlerts = False 
End With 

Set Sourcewb = ActiveWorkbook 
TempFileName = Sourcewb.FullName + ".csv" 

'Copy the sheet to a new workbook 
ActiveSheet.Copy 
Set Destwb = ActiveWorkbook 

'Save the new workbook and close it 
With Destwb 
    .SaveAs Filename:=TempFileName, FileFormat:=xlCSV, ConflictResolution:=xlLocalSessionChanges 
    .Close SaveChanges:=False 
End With 

With Application 
    .ScreenUpdating = True 
    .EnableEvents = True 
    .DisplayAlerts = True 
End With 
End Sub 

編輯固定標籤問題

+1

你可以訪問使用Windows任務調度程序? – Sam

+0

絕對最好的方法是利用Powershell和Windows Task Scheduler。 –

+0

是的我可以訪問Windows任務計劃程序,但是Task Scheduler如何運行VBA代碼並使用當前日期保存文件? – user3877643

回答

6

我會做的兩種方式這一個。

一個將通過Windows任務調度程序。您將在哪裏設置任務來打開Excel並以此方式運行。見http://www.mrexcel.com/forum/excel-questions/302970-task-scheduler-vbulletin-script-auto-open-excel.html

或者

使用代碼

Application.OnTime TimeValue("23:00:00"), SUBNAMEHERE

更改SUBNAMEHERE到的代碼是子。不知道這是否會通過

EDIT運行beforesave部分添加的代碼有文件名

變化TempFileName = Sourcewb.FullName + ".csv"

TempFileName = Sourcewb.FullName & " hr" & format(now,"YYYY-MM-DD") & ".csv"

+0

如果您使用第二個選項,是不是基本上必須打開Excel,運行宏,然後Excel基本上會被凍結,等待2300?或者,您還可以在運行等待該TimeValue的宏時使用Excel嗎? – BruceWayne

+0

@ user3578951,excel不會被凍結。 –

+1

不錯的解決方案。在任何情況下,我都沒有把這個代碼放在'BeforeSave'中。 – dePatinkin