2017-02-16 14 views
0

アクティブなワークブックのデータを2番目のワークブックにコピーし、2番目のワークブックを閉じて最初のワークブックを閉じるExcelマクロでVBAを使用しています。問題は、ActiveWorkbook.close falseはワークブックではなくワークブックのみを閉じることです。 Excelはまだ実行中です。コードの2つのセクションは別々にテストされ、正常に動作しました。マクロにまとめると、閉じた最初のブックの問題が終了します。私のコードはマクロで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アプリケーション自体ではなく、ブックを閉じるように求めています。これにより、このライン

ThisWorkbook.Close False 

を交換してみてください:、両方がそれのように思えるエクセル、の同じインスタンス上で実行されていると想定される

Application.Quit 

+0

"Application.Quit"を使用すると、コンピュータはExcelで予期しないシャットダウンが発生したと判断し、Excelを再起動します。 – johnveit

関連する問題