2013-02-13 48 views
0

我正在運行以下腳本,它看起來好像沒有關閉並且腳本運行時的文件。如何編輯腳本以便它可以關閉腳本。當處理完成時Excel宏沒有關閉CSV文件

Sub LoopFiles() 

    Dim MyFileName As String, MyPath As String 

    Application.ScreenUpdating = False 
    Application.DisplayAlerts = False 

    MyPath = "C:\macro\" 

    MyFileName = Dir(MyPath & "*.xlsx") 

    ChDir "C:\macro\csv" 

    Do Until MyFileName = "" 
     Workbooks.Open Filename:=MyPath & MyFileName 
     ActiveWorkbook.SaveAs Filename:=Left(MyFileName, InStr(1, MyFileName, ".xlsx") - 1), FileFormat:=xlCSV, CreateBackup:=False 
     MyFileName = Dir 
    Loop 

    Application.ScreenUpdating = True 
    Application.DisplayAlerts = True 

End Sub 
+1

使用關閉方法:http://msdn.microsoft.com/en-us/library/office/aa223835(v=office.11 )的.aspx – chuff 2013-02-13 21:00:37

回答

2

加入這一行:ActiveWorkbook.Close False

下面我已經證明了空間。

Do Until MyFileName = "" 
     Workbooks.Open Filename:=MyPath & MyFileName 
     ActiveWorkbook.SaveAs Filename:=Left(MyFileName, InStr(1, MyFileName, ".xlsx") - 1), FileFormat:=xlCSV, CreateBackup:=False 
     ActiveWorkbook.Close False 
     MyFileName = Dir 
Loop 

或更清潔的版本做到這一點:

Dim wkb as Workbook 

Do Until MyFileName = "" 
    Set wkb = Workbooks.Open(Filename:=MyPath & MyFileName) 
    With wkb 
     .SaveAs Filename:=Left(MyFileName, InStr(1, MyFileName, ".xlsx") - 1), FileFormat:=xlCSV, CreateBackup:=False 
     .Close False 
    End With 
Loop