2016-06-30 4 views
-1

Я бы хотел избежать отображения VBE-дисплея для пользователей.Доступ к редактору VB - Как скрыть при обновлении модуля?

Вот сценарий: Access 2010 * .accdb, который используется во всей организации. Когда пользователь открывает приложение базы данных, один из модулей обновляется и сохраняется на основе информации в таблице в базе данных. Это хорошо работает.

системы используются для Windows 7 & 10.

Проблема Когда модуль отмечено выше обновляется & сохранен (с помощью VBA) VBE открывается и отображается.

Пока После обновления & сохранения модуля, я добавил следующий код:

'hide the vbe 
Application.VBE.MainWindow.visible = False 

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

Любые идеи о том, как я могу манипулировать модулем и не видеть VBE?

Заранее благодарим вас за помощь!

+2

_refreshed & saved_ - вам это действительно нужно? У меня никогда не было или не было такой потребности. – Gustav

+0

@Gustav Lucky you. У вас должны быть клиенты, которые на самом деле понимают, как должна использоваться база данных, или у вас уже есть достаточно денег, которые вы можете себе позволить сказать им, что их предпочтительный инструмент не предназначен для такого приложения. Когда-нибудь я надеюсь быть на вашем месте. – CWilson

+0

Извините, ни один из этих сценариев не верен. Я серьезно верю, что вы двигаетесь по неправильному пути. – Gustav

ответ

-1

Вы не используете доступ к способу его использования. Я тоже. :)

Попробуйте добавить следующее объявлений в верхней части модуля:

Declare Function SetWindowPos Lib "user32.dll" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long 
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal ClassName As String, ByVal WindowName As String) As Long 

а затем добавьте ниже к командной кнопке, которая вызывает функцию (ы), что изменение VBE:

Application.Echo False 
SetWindowPos FindWindow("wndclass_desked_gsk", Application.VBE.MainWindow.Caption), 0&, 0&, 2000&, 1, 1, &H80 Or &H1 
<run your code that calls the VBE> 
Application.VBE.MainWindow.Visible = False 
Application.Echo True 

Это первая остановка доступа отображать любые изменения на экране, переместить окно VBE с экрана в то время как он все еще скрывается в фоновом режиме, запускает свой код, скрывает окно в любом случае, как только он выключен экран, а затем снова отображает обновленный экран как обычно. VBE отключен от экрана и скрыт от просмотра панели задач/рабочего стола.

Теперь, перемещая окно VBE с экрана, очевидно, обманывает ... но моему клиенту все равно, если я обманываю или нет.

Это может раздражать (или, что еще хуже), если вы используете этот код, а затем необходимо отлаживать неожиданные ошибки. Кроме того, иногда Access сохраняет эту позицию окна при закрытии, даже в базах данных, что нежелательно. Используйте с осторожностью, или достаточно времени на ваших руках.

Интернет говорит, что следующее должно помочь, но я не получил его для работы в Access 2016. Может быть, вы умнее меня?

LockWindowUpdate FindWindow("wndclass_desked_gsk", Application.VBE.MainWindow.Caption) 

я как-то потерял декларацию за LockWindowUpdate, но я уверен, что вы можете найти его. Я, вероятно, украл его у Чипа Пирсона или что-то в этом роде.

+0

Ответ хороший, и downvotes для стратегий, которые вы не приписываете, но которые все еще поддерживаются производителем инструмента, противоречат философии SE. Вы можете (и, вероятно, должны) не согласиться с построением решения вокруг этой стратегии, но этого недостаточно, чтобы похоронить правильный и точный ответ. В таких условиях сайт не работает. – CWilson

+0

CWilson благодарит за то, что позиционирование подхода на экране кажется подходящим решением. Отправляет назад (и проголосует) после тестирования на этой неделе. Одна из причин, по которой я ценю SE, заключается в том, что даже когда вы не используете вещи, как они обычно используются, кто-то пошел по пути раньше и готов поделиться своим опытом/опытом. Много хорошей информации здесь! – NWdev

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

  • Нет связанных вопросов^_^