2017-02-16 4 views
0

Я использую VBA в макросе Excel, который копирует данные из активной книги во вторую книгу, закрывает вторую книгу и закрывает первую книгу. Проблема заключается в том, что ActiveWorkbook.close false закрывает только рабочие листы, а не книгу; Excel все еще работает. Два раздела кода были протестированы отдельно и работают нормально; при объединении в макрос закрывается первая проблема с рабочей книгой. Мой код:Использование Excel VBA в макросе для закрытия активной рабочей книги

Sub SacoFieldUnitDataCopy() 
' SacoFieldUnitsDataCopy Macro 
' This macro copies the Saco Field Units Avail_Run Stat sheet to a new workbook. 
' 
ActiveWorkbook.RefreshAll 
Call ConvertToValues("Saco Field Units Avail_Run Stat") 
Sheets("Saco Field Units Avail_Run Stat").Select 
Sheets("Saco Field Units Avail_Run Stat").Copy 
ChDir "C:\Saco Units Avail_Run Stats" 
Application.DisplayAlerts = False 
ActiveWorkbook.SaveAs Filename:= _ 
    "C:\Saco Units Avail_Run Stats\Saco Unit Avail_Run Data" & " " & VBA.Format(Date, "MM-DD-YYYY") & ".xlsx", FileFormat:= _ 
    xlOpenXMLWorkbook, CreateBackup:=False 
Call CloseAllOtherWorkbooks 
Application.Wait (Now + TimeValue("0:00:03")) 
ThisWorkbook.Close False 
Application.DisplayAlerts = True 


End Sub 

Function ConvertToValues(Sheetname As String) 
'Select Sheet 
Sheets(Sheetname).Select 
'Select All Cells 
Range("B4:C26").Select 
Selection.Copy 
'Paste Special to remove formulas 
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
    :=False, Transpose:=False 
'Put cursor back on cell a1 
Range("a1").Select 
End Function 

Function CloseAllOtherWorkbooks() 
Dim WBs As Workbook 
For Each WBs In Application.Workbooks 
    If Not WBs.Name = ThisWorkbook.Name Then WBs.Close False 
Next WBs 
End Function 

Любая помощь будет принята с благодарностью. заранее спасибо.

ответ

0

Ну, но вы специально просите Excel закрыть книгу, а не приложение Excel Excel как таковое. Попробуйте заменить эту строку

ThisWorkbook.Close False 

С этим:

Application.Quit 

То есть, если предположить, оба работают на одном экземпляре Excel, который, кажется, нравится.

+0

Когда я использую «Application.Quit», компьютер считает, что Excel испытал неожиданное завершение работы и перезапустил Excel. – johnveit

 Смежные вопросы

  • Нет связанных вопросов^_^