#vba #ms-access #outlook
#vba #ms-access #outlook
Вопрос:
Мы только что перешли на Outlook 365, открытие которого занимает целую вечность. У меня есть программа, которая помещает события в календарь Outlook. Сначала он проверяет, открыт ли Outlook, и, если это не так, открывает его. Я хотел бы иметь песочные часы во время их открытия.
Я вставил это в свой код, но похоже, что он видит, что Outlook открыт, как только он начинает открываться, поэтому песочные часы исчезают.
Вот последняя модификация кода, которую я пробовал:
If IsAppRunning("Outlook.Application") = True Then 'Outlook was already running
Set objApp = GetObject(, "Outlook.Application") 'Bind to existing instance of Outlook
Else 'Could not get instance of Outlook, so create a new one
sAPPPath = GetAppExePath("outlook.exe") 'determine outlook's installation path
Shell (sAPPPath) 'start outlook
Do While Not IsAppRunning("Outlook.Application")
DoEvents
DoCmd.Hourglass True ' turn on Hourglass
Loop
If IsAppRunning("Outlook.Application") = True Then
Set objApp = GetObject(, "Outlook.Application") 'Bind to existing instance of Outlook
DoCmd.Hourglass False ' turn off hourglass
End If
End If
И функции, которые идут с ним:
Function IsAppRunning(sApp As String) As Boolean
On Error GoTo Error_Handler
Dim oApp As Object
Set oApp = GetObject(, sApp)
IsAppRunning = True
Error_Handler_Exit:
On Error Resume Next
Set oApp = Nothing
Exit Function
Error_Handler:
Resume Error_Handler_Exit
End Function
Function GetAppExePath(ByVal sExeName As String) As String
On Error GoTo Error_Handler
Dim WSHShell As Object
Set WSHShell = CreateObject("Wscript.Shell")
GetAppExePath = WSHShell.RegRead("HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionApp Paths" amp; sExeName amp; "")
Error_Handler_Exit:
On Error Resume Next
Set WSHShell = Nothing
Exit Function
Error_Handler:
If Err.Number = -2147024894 Then
'Cannot locate requested exe????
Else
MsgBox "The following error has occurred." amp; vbCrLf amp; vbCrLf amp; _
"Error Number: " amp; Err.Number amp; vbCrLf amp; _
"Error Source: GetAppExePath" amp; vbCrLf amp; _
"Error Description: " amp; Err.Description, _
vbCritical, "An Error has Occurred!"
End If
Resume Error_Handler_Exit
End Function
Комментарии:
1. Установите песочные часы перед открытием Outlook.
2. Установите песочные часы до и после внешнего блока If Then Else.
3. Нет — не сработало. И я обнаружил, что даже если Outlook откроется, вы не сможете сразу перейти к календарю. Поскольку Office 365 становится все более популярным, у кого-то должна была возникнуть эта проблема.