Определенная книга невидимая Excel VBA

Я пишу сценарий в Excel VBA, где Workbook должен открываться с помощью UserForm. Я хочу, чтобы был виден только UserForm, а само окно Excel было невидимым. Таким образом, я написал следующий код для открытия Workbook:

Private Sub Workbook_Open()

'Application launch

Application.Visible = False 'Hide Excel window
EnableResize = False
Application.DisplayFullScreen = True 'Preset fullscreeen mode
Application.CommandBars("Full Screen").Enabled = False 'Hide command bars
WelcomeForm.Show 'Show welcome UserForm

End Sub

Я понимаю, что сделал все приложение Excel невидимым. В этом смысле сейчас происходит следующее: когда у меня открыты другие книги Excel, они становятся невидимыми, как только я открываю эту. Как я могу сделать так, чтобы этот параметр применялся только к этой конкретной книге? Спасибо


person franciscofcosta    schedule 09.12.2016    source источник
comment
Я не верю, что ты сможешь. В Excel есть ГЛОБАЛЬНЫЕ параметры, которые не зависят от книги, которую вы просматриваете. Например, вы можете свернуть ленту, просматривая одну книгу, затем закрыть книгу и выйти, а затем запустить Excel с файлом или без него. Вы увидите, что лента остается свернутой.   -  person FDavidov    schedule 09.12.2016
comment
вы также можете использовать VeryHidden, см .: stackoverflow.com/questions/853270/, что мешает пользователям легко добраться до него.   -  person Solar Mike    schedule 09.12.2016
comment
Иногда усилия, затрачиваемые на создание проекта VBA в Excel, похожего на приложение Windows, - это намного больше, чем просто потратить некоторое время на написание приложения Windows. YMMV.   -  person Robin Mackenzie    schedule 09.12.2016


Ответы (3)


Здесь нужно сделать выбор:

Sub HideSheet()

Dim sheet As Worksheet

    Set sheet = ActiveSheet

    ' Hides the sheet but users will be able to unhide it using the Excel UI
    sheet.Visible = xlSheetHidden

    ' Hides the sheet so that it can only be made visible using VBA
    sheet.Visible = xlSheetVeryHidden

End Sub

Подробнее см. в этом вопросе SO

person Solar Mike    schedule 09.12.2016

Частичный ответ: вы также можете установить свойство окна .Visible

ThisWorkbook.Windows(1).Visible = False

однако это не скроет приложение (будет пустое окно Excel, если у вас есть только одна открытая книга), поэтому вам нужно сначала проверить это

If Application.Workbooks.Count > 1 Then
    ThisWorkbook.Windows(1).Visible = False
Else
    Application.Visible = False
End If
person arcadeprecinct    schedule 09.12.2016

что вы можете сделать следующее

private sub workbook_open ()

userform.activate

end sub

затем в коде пользовательской формы напишите

Private sub userform_intialize()

application.screenupdate =false

end sub

теперь вы видите форму только при запуске

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

person Waly    schedule 07.04.2021