Как открыть Access с панели задач?

Я просматривал форум и пробовал несколько идей, но проблема все еще осталась. Я использую Access 2013, в форме я нажимаю кнопку, чтобы проверить орфографию и грамматику текстового поля. Проверка выполняется правильно с помощью проверки грамматики слова. Все идет нормально. Но как только Word закрывается, я активирую Access, но он продолжает мигать на панели задач, и мне приходится щелкнуть по нему, чтобы продолжить работу. Я хочу, чтобы Access вернулся на экран и продолжал работать в обычном режиме.

Код следующий:

Private Sub Comando2_Click()

Dim objWord As Word.Application
Dim doc As Word.Document

accessid = GetCurrentProcessId
accesshwnd = Application.hWndAccessApp

Set objWord = CreateObject("Word.Application")

With objWord
       Set doc = .Documents.Add
       .Selection.Text = Me.Texto0
       docum = doc & " - Word"
       .Visible = True
       VBA.AppActivate (docum)
       .Visible = False
       .Dialogs(wdDialogToolsSpellingAndGrammar).Show
       If Len(.Selection.Text) <> 1 Then
          Me.Texto0 = .Selection.Text
'          spellcancell = False
       Else
'          spellcancell = True
       End If
       doc.Close wdDoNotSaveChanges
    .Quit
End With

Set objWord = Nothing

AppActivate (accessid)
SetForegroundWindow accesshwnd


End Sub

Заранее спасибо за вашу помощь. С уважением

Как упоминалось выше, я хочу, чтобы Access вернулся на экран и продолжал работать в обычном режиме. Я пытался активировать его с помощью Hwnd, SetForegroundWindow и множества других идей, прочитанных на форуме... ничего не помогло.

Возможно, вам придется добавить sleep ..., как это сделано здесь: stackoverflow.com/questions/37835809/…. Это связано с тем, что Windows делает программу, которая в последний раз отправляет вывод на экран, активным окном, поэтому перед выполнением SetForegroundWindow accesshwnd вам придется подождать (некоторое время), пока Word закроется, а затем активировать Access.

Luuk 17.02.2024 12:51

@Luuk, спасибо, но проблема все та же. Кажется, это работает, если второе приложение открывается оболочкой. Я попробую посмотреть, смогу ли я открыть Word с помощью оболочки и пройти тест для проверки.

Luisja 17.02.2024 19:36

Не могли бы вы просто использовать DoCmd.RunCommand acCmdSpelling в Access? Примерно такая ссылка: код проверки правописания в поле формы-мс-доступа

Darren Bartrup-Cook 19.02.2024 15:06

@DarrenBartrup-Cook, попробовал, и это работает, но проверяйте только орфографию, а не грамматику. Мне нужна проверка грамматики. Спасибо, в любом случае

Luisja 24.02.2024 12:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы делаете это слишком сложно и закрываете все объекты.

Это работает, как и ожидалось:

    Dim objWord     As Word.Application
    Dim doc         As Word.Document
    
    Dim docum       As String
    
    Set objWord = CreateObject("Word.Application")
    
    With objWord
        Set doc = .Documents.Add
        docum = doc.Name & " - Word"
        .Visible = True
        VBA.AppActivate docum
        .Visible = False
        
        .Selection.Text = Me.Texto0
        .Dialogs(wdDialogToolsSpellingAndGrammar).Show
        If Len(.Selection.Text) <> 1 Then
        Me.Texto0 = .Selection.Text
'          spellcancell = False
        Else
'          spellcancell = True
        End If
        
        doc.Close wdDoNotSaveChanges
        Set doc = Nothing
        .Quit
    End With

    Set objWord = Nothing

Спасибо, я протестировал два сценария: 1) замена всей моей программы на вашу, но доступ даже не активируется и не мигает на панели задач 2) замена части моего слова обработки кода вашим, в этом случае оно работает точно так же, как у меня, доступ продолжает мигать на панели задач

Luisja 17.02.2024 19:40

Ну, этот код выполняется здесь, значит, происходит что-то еще.

Gustav 18.02.2024 11:57

Привет @Густав, вы подсказываете, почему работает неправильно, к сожалению, это не дает мне решения, я использую Surface, он работает как в режиме ПК, так и в режиме планшета. Вы правы: работать в режиме ПК правильно, а вот в режиме планшета — нет. Мне нужно, чтобы он работал в режиме планшета.

Luisja 26.02.2024 08:28

Это объясняет. Посмотрим, смогу ли я найти Surface.

Gustav 26.02.2024 08:43

Привет @Gustav, спасибо, что заставил меня думать по-другому, пожалуйста, посмотрите мой ответ, чтобы найти обходной путь.

Luisja 03.03.2024 10:19
Ответ принят как подходящий

Я нашел обходной путь, он не идеален, но, по крайней мере, работает, пока я не получу лучшее решение.

Спасибо за вашу помощь, заставили меня задуматься по-другому:

    AppActivate GetCurrentProcessId 
    SendKeys "%{TAB}", True 
    SendKeys "{TAB}", True

Другие вопросы по теме