2016-03-18 3 views
1

У меня есть VSTO на MS Project. Я использую VB.NET. Мне нужно, когда я нажимаю кнопку, созданную на ленте, она будет выполнять некоторые коды, которые будут обновлять информацию о какой-либо задаче, однако мне нужно будет автоматически закрыть MS Project. Я попробовал application.FileCloseEx(), но он только закрывает файл, MS Project все еще загружен. Мне нужно скрыть кнопку x в окне.Закрыть MS Project, используя VSTO

Спасибо, Gilbert

ответ

0

Если объект приложения MS Project представляет "appMSProject", то это так же просто, как:

appMSProject.Quit 

ИЛИ говорят в макро бега в рамках проекта:

Application.Quit 

Вот как я это делаю в VBA из Excel или Access. Насколько я могу сказать объекты & методы одинаковы в VB.NET. В итоге я создаю экземпляр объекта MS Project, который запускает приложение &, открывает файл, выполняет некоторую работу, закрывает файл, а затем уничтожает объект MS Project, устанавливая его в Nothing. Это приводит к закрытию приложения. Вы также можете использовать «appMSProject.Quit», а затем установить его в «Ничто». Честно говоря, второй вариант выглядит более упорядоченным & легче понять в коде. Во всяком случае, вот пример того, как я это сделать:

Dim appMSProject As MSProject.Application 
Dim prjPrj As MSProject.Project 
Dim strPrjFile As String 

strPrjFile = "C:\where_is_my_file\file_name.mpp" 

Set appMSProject = New MSProject.Application 
appMSProject.FileOpenEx Name:=strPrjFile 
Set prjPrj = appMSProject.ActiveProject 

'''Do something in here with the prjPrj 

'Close the file, in my case w/o saving 
appMSProject.FileCloseEx pjDoNotSave 


'Destroy the objects 
Set prjPrj = Nothing 
Set appMSProject = Nothing 

FYI - В этом примере я делаю подготовительную работу, чтобы я не показать приложение. Я также использую «раннее связывание».

Вот пример MSDN, который действительно показывает приложение с дополнительной информацией о начале позднего связывания-vs - https://msdn.microsoft.com/en-us/library/office/ff865152.aspx

+0

Привет, я был в состоянии сделать это после того, как я послал вопрос. Однако могу ли я задать вам новый вопрос? как я получу полный путь открытого MS Project. – Gilbert

+0

Привет, Джек, я нашел ответ, ActiveProject.Fullname – Gilbert

+0

Гилберт, классно! Другая вещь, которую я делаю все время, на случай, если вы не знаете, как это сделать, - это запустить макрорекордер, сделать то, что я хочу автоматизировать, нажав и клавиатуру, остановите рекордер, а затем отредактируйте только что записанный макрос в редактор VBA. Это никогда не очень многократно используемый код, но он почти всегда предоставляет объекты и параметры. Отличная экономия времени, как вы уже знаете. Лучший! – JackW327

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