AppActivate Excel-vba: Excel мигает на панели задач и не активируется

683
Riccardo La Marca

В модуле Excel-vba:

Option Explicit Sub Test() Dim Outlook As Object Set Outlook = CreateOutlook() Set Outlook = Nothing End Sub Function CreateOutlook() As Object Dim Outlook As Object On Error Resume Next Set Outlook = GetObject(, "Outlook.Application") On Error GoTo 0 If Outlook Is Nothing Then Shell "Outlook" On Error Resume Next Do While Outlook Is Nothing Set Outlook = GetObject(, "Outlook.Application") Loop On Error GoTo 0 Set Outlook = CreateObject("Outlook.Application") AppActivate Application.Caption 'This line doesn't cause an error but excel icon flashes in taskbar and doesn't activate. Set CreateOutlook = Outlook Set Outlook = Nothing End Function 

У меня Windows 7 Ultimate, 64-разрядная.

0
Вам нужно отредактировать свой вопрос и указать, какую ошибку вы получили. Ramhound 6 лет назад 0
Что произойдет, если вы попробуете "AppActivate" Microsoft Outlook "" вместо этого? duDE 6 лет назад 1
@duDE, зачем ему активировать Access, если он работает в Excel? LPChip 6 лет назад 0
Эта строка не вызывает ошибку, но значок Excel мигает на панели задач и не активируется. Riccardo La Marca 6 лет назад 0
@LPChip Извините, я думал, что OP хочет активировать Outlook. Его вопрос не очень подробный :) duDE 6 лет назад 0
Я отредактировал вопрос для уточнения. Riccardo La Marca 6 лет назад 0
Вы до сих пор не ответили на вопрос @duDE. Отредактируйте свой вопрос. Ramhound 6 лет назад 0
Это может сработать, если вы попытаетесь активировать свой рабочий лист. Это было какое-то время, но я думаю, что код: `ThisWorkbook.activesheet.activate` LPChip 6 лет назад 0
Не работает к сожалению. Riccardo La Marca 6 лет назад 0

1 ответ на вопрос

0
Riccardo La Marca

Решено!

Вместо:

AppActivate Application.Caption 

Это:

SendKeys "% i" 

Затем:

Option Explicit Sub Test() Dim Outlook As Object Set Outlook = CreateOutlook() Set Outlook = Nothing End Sub Function CreateOutlook() As Object Dim Minimize As Boolean Dim Outlook As Object Minimize = False On Error Resume Next Set Outlook = GetObject(, "Outlook.Application") On Error GoTo 0 If Outlook Is Nothing Then Shell "Outlook" Minimize = True End If On Error Resume Next Do While Outlook Is Nothing Set Outlook = GetObject(, "Outlook.Application") Loop On Error GoTo 0 If Minimize Then SendKeys "% i" Set Outlook = Nothing Set CreateOutlook = CreateObject("Outlook.Application") End Function