Если я вас правильно понял, вы хотите остаться невидимым для пользователя во время определенной операции, а затем снова появиться после ее завершения?
Если это так, взгляните на код, который я использовал для созданиямоё приложение на самом деле запускается с невидимым Excel с только определенной формой на шоу:
Когда пользователь закончил и хочет выйти из приложения, он нажимает командную кнопку cmdQuit.Код за этим заставит Excel снова появиться: Код вставлен ниже.Я надеюсь, что это поможет вам найти решение для вашей ситуации.
Примечания:
1. В идеале мы хотели бы сделать весь Excel невидимым!Таким образом, если на компьютере открыт только один экземпляр Excel, используйте Application.visible = true
.Однако, возможно, что другие электронные таблицы открыты.Если это так, то скрыть только текущую рабочую книгу.Следовательно, ThisWorkbook.Windows(1).Visible = False
используется после в блоке Else
.
2. Как только Excel становится невидимым, мы загружаем наши формы.Это окна, которые обеспечивают интерфейс переднего плана для взаимодействия с пользователем.Таким образом, я могу создать правильное приложение из Excel практически без указания того, что Excel работает за кулисами.
3. Как только пользователь закончил, он нажимает кнопку выхода, которую я назвал cmdExit.Вы можете увидеть код согнуть эту кнопку ниже.Он выгружает формы графического интерфейса и делает Excel снова видимым для пользователя.Это похоже на то, чего вы хотите достичь.
Private Sub Workbook_Open()
Stop
' Hide Excel...
' ActiveWorkbook.Windows(1).Visible = False
If Workbooks.Count < 2 Then
Application.Visible = False
Else
ThisWorkbook.Windows(1).Visible = False
End If
Load frmMain
frmMain.Show vbModal
End Sub
Private Sub cmdQuit_Click()
'ThisWorkbook.Windows(1).Visible = True
Application.Visible = True
Unload frmMoreOccupationLines
Unload Me
End Sub
Я думаю, что причина, по которой вы можете видеть более одной книги, может заключаться в том, что вы по неосторожности оставили предыдущие экземплярыExcel все еще открыт, но скрыт (невидим).Они не были выгружены и остаются в памяти.Имеет ли это смысл?Поэтому, когда вы делаете Application.visible=true
, вы видите все предыдущие экземпляры, которые вы не правильно выполнили.Таким образом, решением для m может быть обеспечение правильной стратегии выгрузки и выхода в вашем коде.
Так что я думаю, что вы, возможно, ищете решение, как показано ниже:
Sub Test()
If Workbooks.Count < 2 Then
Application.Visible = False
Else
ThisWorkbook.Windows(1).Visible = False
End If
Application.Wait (Now + TimeValue("0:00:05"))
If Workbooks.Count < 2 Then
Application.Visible = True
Else
ThisWorkbook.Windows(1).Visible = True
End If
End Sub
Private Sub cmdQuit_Click()
Application.Visible = True
'Unload Me
Application.Quit
End Sub