2015-11-30 9 views
0

Я задал этот вопрос раньше, но на него никогда не отвечали. У меня есть код VBA, который форматирует разные файлы и выводит их на электронную таблицу Excel, а затем сохраняет копии в двух разных каталогах. Однако проблема в том, что она оставляет пустую книгу открытой, и я не знаю, как ее закрыть. Я пробовал Workbooks.Close и Application.Quit, но не работал. Любая помощь будет принята с благодарностью. Вот часть моего кода, что я имею в виду:VBA закрыть пустую книгу

sSaveAsFilePath = "\\Filesrv02\test\remit" + ".csv" 
sSaveAsFilePath2 = "\\Filesrv02\backup\remit" + Format(Date, "mmddyy") + ".csv" 

Application.DisplayAlerts = False 
ChDir "\\Filesrv02\test" 
ActiveWorkbook.SaveAs FileName:=sSaveAsFilePath, _ 
     FileFormat:=xlCSV, CreateBackup:=False 
     'ActiveWorkbook.Close False 

ChDir "\\Filesrv02\Backup" 
     ActiveWorkbook.SaveAs FileName:=sSaveAsFilePath2, _ 
     FileFormat:=xlCSV, CreateBackup:=False 
     ActiveWorkbook.Close True 
Application.DisplayAlerts = False 
MsgBox ("done") 

End Sub 
+0

Вид трудно отобразить «сделано», если вы хотите, чтобы вы полностью закрылись? И почему два displayalearts = false? – findwindow

+0

Я не думаю, что можно закрыть главный проект из его кода. – ZygD

+0

- это код, который вызывается из отдельной книги, чем те, которые вы хотите создать и закрыть? И почему там пустая книга? Лучше всего квалифицировать каждую рабочую книгу, с которой вы хотите работать, с переменной типа «Workbook», а затем работать с ней напрямую и исключать инструкцию «ActiveWorkbook». Если вы это сделаете, будет легко увидеть, где ваша проблема. –

ответ

1

Поскольку вы только копирование листа из вашей книги, чтобы сохранить в различных местах , вы можете просто скопировать этот лист из книги и сохранить его в другом месте. Это оставит вашу оригинальную книгу неповрежденной и не будет создавать таинственные пустые книги. Также обратите внимание, как я квалифицировал все книги и рабочие листы с переменными.

sSaveAsFilePath = "\\Filesrv02\test\remit" + ".csv" 
sSaveAsFilePath2 = "\\Filesrv02\backup\remit" + Format(Date, "mmddyy") + ".csv" 

Application.DisplayAlerts = False 

Dim wb As Workbook, wbC As Workbook, ws As Worksheet 

Set wb = ThisWorkbook 
Set ws = ws.Sheets("mySheet") 'change name as needed 

'create and save test version 
ws.Copy 

Set wbC = ActiveWorkbook 

With wbC 
    .SaveAs Filename:=sSaveAsFilePath, FileFormat:=xlCSV, CreateBackup:=False 
    .Close 
End With 

'create and save backup version 
ws.Copy 

Set wbC = ActiveWorkbook 

With wbC 
    .SaveAs Filename:=sSaveAsFilePath2, FileFormat:=xlCSV, CreateBackup:=False 
    .Close 
End With 

Application.DisplayAlerts = False 

MsgBox ("done") 
0

Создать новую книгу перед сохранением

Application.Workbooks.Add 
    ActiveWorkbook.SaveAs FileName:=sSaveAsFilePath, _ 
      FileFormat:=xlCSV, CreateBackup:=False 
    ActiveWorkbook.Close False 
Смежные вопросы