В базе данных My Access есть макрос autoexec, который открывает главное меню (Форма). Все необходимые функции - это меню (форма) -контролируемое, и я хочу скрыть окно доступа, чтобы отображались только формы. Я ссылался на http://www.tek-tips.com/faqs.cfm?fid=2562, но это не работает с более поздними версиями. Есть ли фрагмент, который будет работать для Access 2007-2013?Скрыть окно доступа при открытии формы
ответ
Это код, я бегу в моем Acc 2003 и 2007 Apps, работает в 2010 среде:
Private Sub Form_Load()
'Hide Data-Base Window:
DoCmd.SelectObject acTable, , True
DoCmd.RunCommand acCmdWindowHide
'...Other Actions...
end sub
Для скрытия ленты в 2007 году и выше, использование этой линии я нашел here:
DoCmd.ShowToolbar "Ribbon", acToolbarNo
Это идеально. Просто простая команда. Я искал другую подобную команду, чтобы скрыть ленту, но ничего не мог найти. Это возможно? –
@Robert Kendall Я добавил строку кода к ответу – marlan
Это то, что я использую, который работает до 2016 года:
Option Compare Database
Option Explicit
'''HIDE WINDOW MODULE
'''USE THIS TO ACTIVATE HIDE WINDOW MODULE
''' SixHatHideWindow(SW_SHOWMINIMIZED)
Global Const SW_HIDE = 0
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2
Global Const SW_SHOWMAXIMIZED = 3
Private Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Function SixHatHideWindow(nCmdShow As Long)
Dim loX As Long
Dim loForm As Form
On Error Resume Next
Set loForm = Screen.ActiveForm
If Err <> 0 Then
loX = apiShowWindow(hWndAccessApp, nCmdShow)
Err.Clear
End If
If nCmdShow = SW_SHOWMINIMIZED And loForm.Modal = True Then
MsgBox "Cannot minimize Access with " _
& (loForm.Caption + " ") _
& "form on screen"
ElseIf nCmdShow = SW_HIDE And loForm.PopUp <> True Then
MsgBox "Cannot hide Access with " _
& (loForm.Caption + " ") _
& "form on screen"
Else
loX = apiShowWindow(hWndAccessApp, nCmdShow)
End If
SixHatHideWindow = (loX <> 0)
End Function
Чтобы скрыть окно просто: Call SixHatHideWindow(SW_SHOWMINIMIZED)
ТАКЖЕ ПРИМЕЧАНИЕ: В зависимости от того, какая версия то есть 32 бит или 64 бит может понадобиться добавить атрибут PtrSafe так Если у вас возникли проблемы с этим Объявить функции API, как это: Private Declare PtrSafe Function apiShowWindow...
Я вложил это и добавил кнопку для запуска кода: SixHatHideWindow (SW_SHOWMINIMIZED), но я получаю сообщение об ошибке: «Объект не содержит объект автоматизации« SW_SHOWMINIMIZED »« –
Я получил эту ошибку с этим же модулем раньше. Это всегда происходило из-за ошибок компиляции где-то в другом месте. Сделай это; 1. Прокомментируйте этот модуль, который вы только что добавили ... затем скомпилируйте и исправьте любые ошибки, которые могут появиться еще где. Если вы не найдете дополнительных ошибок, кроме тех, которые затем не комментируют модуль и компактны и восстанавливают базу данных. Это должно с надеждой решить проблему. –
Также обратите внимание, что вы должны вызывать функцию в открытом событии формы, которая запускается до события загрузки –
Кажется, ваша цель состоит в том, чтобы ограничить возможности доступа пользовательского интерфейса, которые доступны для пользователя базы данных. Вы хотите ограничить их вариантами, которые вы предоставляете через свою форму запуска.
В этом случае возьмите копию своего файла ACCDB и измените расширение своего файла на ACCDR. Затем, когда вы открываете ACCDR из проводника Windows, Access откроет его в «режиме исполнения». Режим выполнения отключает большинство стандартных параметров пользовательского интерфейса. Например, панель навигации не отображается и не может быть открыта. Также он дает вам минимальную версию ленты; большинство стандартных вариантов ленты исчезли.
Runtime mode имеет другие последствия, которые вы должны исследовать, чтобы убедиться, что он подходит для ваших нужд. Одной из важных проблем является режим выполнения, который выйдет из приложения, когда будет обнаружена необработанная ошибка.
Если режим ACCDR/runtime подходит для вашей конкретной ситуации, это недорогой способ ограничить возможности пользовательского интерфейса базы данных. Однако будьте осторожны, чтобы пользователь мог сделать копию ACCDR и изменить расширение файла обратно на ACCDB, поэтому этот подход может не соответствовать вашим требованиям безопасности.
Я пытался выполнить скрытие окна приложения Access и использовать всплывающие формы, которые я мог бы запустить из Outlook. Вот как я столкнулся с этим сообщением. Но я обнаружил, что с 64-битной версией Outlook 2013 на 64-битной Windows 7 даже не требуется функция SixHatHideWindow. Использование следующего кода в Outlook 2013 выполняет то же самое. (Не забудьте добавить ссылку на библиотеку объектов доступа в VBA.) Эта процедура сохраняет заголовок из текущего активного окна Outlook, запускает новый скрытый экземпляр Access (окно приложения не отображается), открывает назначенную базу данных Access, запускает назначенный вид (как видимый), выходит из экземпляра Access, когда форма закрыта, и повторно активирует исходное активное окно Outlook. Я не тестировал это ни в каких других средах, ни в режиме исполнения.
Главное в этом подходе состоит в том, что не требуется вставлять какой-либо специальный код в открытое событие формы в базе данных Access. Весь необходимый код содержится в Outlook VBA. Также не нужно создавать всплывающие и модальные свойства формы базы данных «Да» в базе данных.
Форма в этом случае представляет собой сложную форму с элементом управления вкладкой и несколькими подформами.Кажется, что все работает, открыта ли форма из самого доступа или через автоматизацию из Outlook.
Примечание: SetWindowPos api устанавливает местоположение и размер главного окна доступа, даже если доступ не отображается. Когда Access будет закрыт, в следующий раз, когда пользователь откроет Access, он снова откроется до размера и положения, заданного командой SetWindowPos api. Это может раздражать пользователей, поэтому SetWindowPos api устанавливает окно приложения Access в полный размер экрана. В следующий раз, когда пользователь откроет Access, он будет увеличен на экране. Могут быть более сложные способы справиться с этим, но этот подход выполняется быстро и легко, и большинство пользователей в любом случае работают с максимальным доступом в большинстве случаев.
Надеюсь, что это поможет кому-то.
Private Declare PtrSafe 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
Private Declare PtrSafe Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Private Declare PtrSafe Function GetDesktopWindow Lib "user32"() As Long
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Sub OpenAccessFrmProjDetails()
Dim accapp As Access.Application
Dim HoldCaption As String
Dim ScreenRect As RECT
Dim ret As Long
Dim width As Variant
Dim height As Variant
'Get the width and height of the screen in pixels
10 ret = GetClientRect(CLng(GetDesktopWindow()), ScreenRect)
20 width = ScreenRect.Right - ScreenRect.Left
30 height = ScreenRect.Bottom - ScreenRect.Top
'Get Outlook activewindow caption
40 HoldCaption = ActiveWindow.Caption
'Display the Access database form
50 Set accapp = New Access.Application
60 With accapp
70 .opencurrentdatabase ("C:\Users\pmf\Documents\Programming Development\Access Visibility Testing\Hidden.accdb")
80 SetWindowPos .hWndAccessApp, 0, 0, 0, width, height, 0
90 .DoCmd.OpenForm FormName:="frmProjDetails", WindowMode:=acDialog
100 End With
110 Set accapp = Nothing
'Reactivate Outlook
120 AppActivate HoldCaption
110 End Sub
- 1. Как скрыть окно QML при открытии другого окна QML
- 2. Сбой формы при открытии
- 3. Принесите окно доступа сверху при открытии из Excel
- 4. Введите значение параметра Диалоговое окно при открытии формы
- 5. sql-запрос при открытии формы в базе данных доступа
- 6. Скрыть div при открытии меню браузера
- 7. Изменение прозрачности окна при открытии формы
- 8. Закрытие формы при открытии другой формы
- 9. ShowDialog проблема при открытии формы
- 10. Ошибка при открытии дочерней формы
- 11. Listbox Расширение слишком далеко при открытии формы
- 12. Должны ли ключи доступа оставаться подчеркнутыми при открытии диалогового окна?
- 13. Скрыть все другие контекстные меню при открытии
- 14. Как скрыть пробелы при открытии документов
- 15. Как скрыть все элементы при открытии
- 16. Javascript JQuery скрыть поля при открытии страницы
- 17. Как скрыть навигационную панель при открытии spinner
- 18. Скрыть ящик для заметок при открытии Активность
- 19. при открытии страницы, почему нельзя скрыть содержимое?
- 20. Открыть второе окно при открытии приложения laravel
- 21. Прокрутите вниз окно при открытии окна
- 22. Форсировать окно, чтобы иметь фокус при открытии
- 23. WPF/C# - Окно закрывается при его открытии
- 24. jQuerymobile: Закрыть всплывающее окно при открытии панели
- 25. Скрыть всплывающее окно при отладке
- 26. Скрыть всплывающее окно при нажатии
- 27. «Ошибка выполнения 91» при открытии доступа
- 28. Права доступа при открытии файла - Perl, CGI
- 29. Получение доступа запрещается при открытии SQL-соединений
- 30. Исключение при открытии внутреннего класса доступа
Я не уверен, что это сделал, но это сработало. спасибо –