2016-05-16 12 views
1

У меня есть два экземпляра файла Excel. Я хочу закрыть один из экземпляров, так что когда я перейду к диспетчеру задач, в этом процессе не будет никаких следов EXCEL.exe. У меня есть два excel, открытых из пользовательской формы. У меня есть кнопка в файле первенствовать, чтобы закрыть книгу Excel,Закрытие экземпляра этой книги превосходит?

=== this is vb.net 
public sub openExcel() 
     my code.... blah blah blah.... 
     'open excel 
     Dim xlsApp As Excel.Application 
     Dim xlsWB As Excel.Workbook 
     xlsApp = New Excel.Application 
     xlsApp.Visible = True 
     xlsWB = xlsApp.Workbooks.Open(c:\myExcelFile.xlsm") 
end sub 


======= this is vba 
ThisWorkbook.Save 
Application.DisplayAlerts = True 
Application.Quit 

Я все еще получаю EXCEL.EXE после закрытия одного файла.

+0

Почему вы открываете второй экземпляр в первую очередь? Как правило, лучше получить ручку в активной книге, например. http://stackoverflow.com/questions/34958089/how-do-you-retrieve-a-pointer-to-the-active-workbook-in-a-vb-net-excel-document. – Charlie

+0

Как открыть оба файла только в одном экземпляре? Я открываю оба одновременно. –

+0

Я нашел 'Application.Quit' действительно неудобным с объектами Excel. По какой-то причине единственным способом, которым я смог их завершить, является идентификация идентификатора процесса и завершение его, когда я закончил с ним. –

ответ

0

Если вы сделаете это:

xlsWB = xlsApp.Workbooks.Open(c:\myExcelFile1.xlsm") 
xlsWB = xlsApp.Workbooks.Open(c:\myExcelFile2.xlsm") 

Должен открыть только один экземпляр Excel (как показано в диспетчере задач).

Если вы сделаете это - откроется 2 экземпляра. Поэтому в основном просто отслеживайте первый экземпляр и повторно используйте его.

xlsApp1 = New Excel.Application 
xlsApp2 = New Excel.Application 
0

Надеется, что это помогает:

«------ в случае, если вы whant закрыть оригинальную книгу открытой компании.

=== это vb.net

public sub openExcel() 

     Dim NameW As String 
     NameW = ThisWorkbook.name ' get the name of the opened workbook 

     my code.... blah blah blah.... 
     'open excel 
     Dim xlsApp As Excel.Application 
     Dim xlsWB As Excel.Workbook 
     xlsApp = New Excel.Application 
     xlsApp.Visible = True 
     xlsWB = xlsApp.Workbooks.Open(c:\myExcelFile.xlsm") 

     Workbooks(NameW).Close ' close the workbook 


end sub 


======= this is vba 
ThisWorkbook.Save 
Application.DisplayAlerts = True 
Application.Quit 

Иначе, если ваша активная рабочая книга является тот, который вы хотите закрыть вы можете использовать:

ActiveWorkbook.Close 
Смежные вопросы