2017-02-16 1 views
0

활성 통합 문서의 데이터를 두 번째 통합 문서로 복사하고 두 번째 통합 문서를 닫은 다음 첫 번째 통합 문서를 닫는 Excel 매크로에서 VBA를 사용하고 있습니다. 문제는 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

글쎄요,하지만 엑셀에 개체 엑셀 응용 프로그램 그 자체가 아니라 통합 문서를 닫으라고 특별히 요구하고 있습니다. 이것으로이 라인

ThisWorkbook.Close False 

를 교체하십시오 : 모두가처럼 보인다 엑셀의 동일한 인스턴스에서 실행중인 가정한다

Application.Quit 

.

+0

"Application.Quit"를 사용할 때 컴퓨터는 Excel에서 예기치 않은 종료가 발생하여 Excel이 다시 시작된다고 생각합니다. – johnveit

관련 문제