Как закрыть программу vba

Есть ли способ закрыть только приложение Visual Basic? я попробовал Apllication.Quit, который закроет приложение Visual Basic и Excel тоже.

Как закрыть только приложение Visual Basic?

Private Sub UserForm_Activate() Application.Quit End Sub
user1120444 11 мар ’14 в 06:57 2014-03-11 06:57
2014-03-11 06:57

3 ответа

Когда вы открываете файл Excel, окно VBA не открывается, поэтому ваши пользователи не могут видеть ваш код, если они его не откроют. Так что я не очень понимаю, почему у вас такая проблема.

В любом случае, вы можете запустить этот код, чтобы закрыть его:

ThisWorkbook.VBProject.VBE.MainWindow.Visible = False

В зависимости от настроек безопасности вы можете получить сообщение об ошибке, которое вы можете прочитать здесь:
http://support.microsoft.com/kb/282830.

user3399849 11 мар ’14 в 11:25 2014-03-11 11:25
2014-03-11 11:25

Если вы просто хотите, чтобы ваша форма ушла, используйте Me.Hide ,

user2441 11 мар ’14 в 12:07 2014-03-11 12:07
2014-03-11 12:07

0.1 Get your VBA code window quickly under 15 seconds #excel #vba #ytshorts #learn

Я знаю, что это старый пост, но это может помочь кому-то в будущем.

Поэтому я наткнулся на это в поисках предоставленного ответа, и он работает правильно. Однако в моем случае у меня была подпрограмма, которая программно добавляла код в новые листы, которые были открыты в книге. Проблема в том, что пользователи увидели приложение VBA (поскольку оно было видно), которое их смутило, поэтому я также искал способ закрыть окно кода VBA. Добавление кода, предоставленного Nybee, помогло предотвратить проблему.

Dim xPro As VBIDE.VBProject Dim xCom As VBIDE.VBComponent Dim xMod As VBIDE.CodeModule Dim xLine As Long Set xPro = ThisWorkbook.VBProject Set xCom = xPro.VBComponents(ActiveSheet.CodeName) Set xMod = xCom.CodeModule With xMod xLine = .CreateEventProc(«Change», «Worksheet») xLine = xLine + 1 .InsertLines xLine, «Sheet_Evaluator Me» End With Build_Score_Card xMod.VBE.ActiveWindow.Close xCom.VBE.ActiveWindow.Close xPro.VBE.ActiveWindow.Close Set xMod = Nothing Set xCom = Nothing Set xPro = Nothing ThisWorkbook.VBProject.VBE.MainWindow.Visible = False

Читайте также:
Как написать bat файл для запуска программы

Источник: stackru.com

Как закрыть программу из Visual basic

Гибкий и мощный язык программирования Visual Basic .NET, являясь одним из специально созданных средств разработки приложений для платформы Microsoft .NET, позволяет полностью использовать все ее возможности. В частности, компоненты пространства имен System.Diagnostics позволяют осуществлять взаимодействие с процессами, журналами событий и счетчиками производительности. Например, можно закрыть программу из Visual Basic, используя класс Process.

Как закрыть программу из Visual basic

Макросы VBA, запускающиеся при открытии, закрытии и прочих событиях (Серия VBA 14)

Статьи по теме:

  • Как закрыть программу из Visual basic
  • Как закрыть консоль
  • Как в Excel создать программу

Вам понадобится

  • — Microsoft Visual Studio.

Инструкция

Импортируйте пространства имен System, System.Diagnostics и System.Threading. В начало модуля добавьте следующие строки кода:

Imports System
Imports System.Diagnostics
Imports System.Threading

Это нужно просто для удобства использования компонентов, относящихся к данным пространствам имен.

Получите данные процесса, который необходимо закрыть. Используйте объект класса System.Diagnostics.Process. Объявите переменную данного класса:

Dim oProc As Process

Затем используйте какой-либо метод для нахождения необходимого процесса.

Если программа, которую в дальнейшем необходимо будет закрывать, запускается разрабатываемым приложением, то просто сохраните объект, возвращаемый методом Start при запуске:

Если необходимо закрыть процесс с известным идентификатором, используйте статический метод GetProcessById класса Process для получения соответствующего объекта:

Здесь nID – числовой идентификатор процесса.

Если известны только некоторые характеристики целевого процесса, произведите его поиск. Получите список процессов, запущенных на локальной машине, в виде массива объектов класса Process. Используйте методы GetProcesses (возвращает все процессы) или GetProcessesByName (только процессы с заданным именем):

Dim aoAllProcesses As Process() = Process.GetProcesses()
Dim aoProcsByName As Process() = Process.GetProcessesByName(«app.exe»)

Перечислите объекты массива при помощи цикла:

Dim oProc As Process
For Each oProc In aoAllProcesses
‘ действия над oProc
Next

Читайте также:
Программа для тестирования ссд диска на ошибки

В цикле анализируйте свойства MainModule, MainWindowTitle, ProcessName, и т.д. для нахождения нужного объекта.

Попытайтесь завершить программу при помощи отсылки сообщения закрытия ее главному окну. Вызовите метод CloseMainWindow объекта, соответствующего целевому процессу. При необходимости произведите ожидание завершения приложения путем вызова WaitForExit, например:

Метод Application.Quit (Excel)

выражение: переменная, представляющая объект Application.

Примечания

Если при использовании этого метода открыты несохраненные книги, Excel отображает диалоговое окно с запросом на сохранение изменений. Это можно предотвратить, сохранив все книги перед использованием метода Quit или установив для свойства DisplayAlerts значение False. Если это свойство имеет значение False, excel не отображает диалоговое окно при выходе из несохраненных книг. он уходит, не спасая их.

Если для свойства Сохранено для книги задано значение True без сохранения книги на диск, Excel завершит работу без запроса на сохранение книги.

Пример

В этом примере сохраняются все открытые книги, а затем закрывается Excel.

For Each w In Application.Workbooks w.Save Next w Application.Quit

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Обратная связь

Были ли сведения на этой странице полезными?

Источник: learn.microsoft.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru