Окно подсказки SaveChanges в Excel VBA - PullRequest
0 голосов
/ 24 января 2019

Я создал пользовательскую форму, и она отлично работает.Пользовательская форма настроена на автоматическое открытие и запуск при нажатии / открытии файла Excel.Он также автоматически скрывает приложение Excel, так что пользователь может взаимодействовать только с пользовательской формой, а не с книгой.Теперь, последнее, что я хочу сделать, - это добавить кнопку в форму, чтобы пользователь мог получить доступ к книге при желании.В настоящее время у меня есть этот код, который отображает окно сообщения до выхода из пользовательской формы.Когда пользователь выбирает «Да» для вопроса, он открывает приложение «Книга / Excel», а затем неожиданно запрашивает окно с надписью «Хотите сохранить изменения в« FileName.xlsm »?»с опциями «Сохранить, Не сохранять, Отмена».

    Private Sub btnExcel_Click()
    answer = MsgBox("Are you sure you want to Exit and access the Excel 
    Spreadsheet?", vbYesNo + vbQuestion, "Warning!")
        If answer = vbYes Then
            UserForm1.Hide
            Application.Visible = True
        End If
    End Sub

Хотелось бы узнать, есть ли код, чтобы он автоматически выбирал «Отмена», чтобы пользователь мог просто получить доступ к книге и не застать врасплох этот вопрос.Я пробовал это, но это не мешает всплывающей подсказке.

    Private Sub btnExcel_Click() 
    answer = MsgBox("Are you sure you want to Exit and access the Excel 
    Spreadsheet?", vbYesNo + vbQuestion, "Warning!")
        If answer = vbYes Then
            Application.DisplayAlerts = False
            UserForm1.Hide
            Application.Visible = True
        End If
    End Sub

Кроме того, я попытался вставить

    ThisWorkbook.Save

Однако, это говорит о том, что SaveChanges предлагает сохранить, а затем завершает / закрывает Excel.Если кто-нибудь знает, как сказать приглашению выбрать «Отмена», чтобы оно выходило из приглашения и оставалось в рабочей книге, это было бы здорово.TIA

РЕДАКТИРОВАТЬ: у меня есть этот код в ThisWorkbook , и он включает в себя код для Workbook_Open .Этот код должен открывать эту конкретную книгу в отдельном приложении Excel, чтобы другие книги Excel могли открываться, не будучи скрытыми из-за того, что пользовательская форма была скрыта при запуске.

            Private Sub Workbook_BeforeClose(Cancel As Boolean)
                'important to reset this
                Application.IgnoreRemoteRequests = False
            End Sub


            Private Sub Workbook_Open()
                'need to use ontime to allow xl to initialise fully
                Application.OnTime Now, "ThisWorkbook.OnlyOneOfMe"
            End Sub


            Private Sub OnlyOneOfMe()
            Dim XlApp As Excel.Application
                On Error GoTo BAD
                With Application
                    If Me.ReadOnly Or .Workbooks.Count > 1 Then
                        Me.ChangeFileAccess Mode:=xlReadOnly
                        Set XlApp = New Excel.Application
                        XlApp.Visible = True
                        XlApp.Workbooks.Open (Me.FullName)
                        GoTo BAD
                    Else
                        'stop opening from explorer (but not from excel)
                        .Visible = False
                        .IgnoreRemoteRequests = True
                        UserForm1.Show
                        .Visible = True
                        .Quit
                    End If
                    Exit Sub
                End With
            BAD: If Err Then MsgBox Err.Description, vbCritical, "ERROR"
                Set XlApp = Nothing
                Me.Close False
            End Sub
...