Apportant une fenêtre d'Excel à l'avant-plan d'Accès
Je suis en train d'essayer d'ouvrir un fichier Excel à partir d'Access et il ne le travail, mais la fenêtre Excel apparaît en arrière-plan (derrière la fenêtre d'Accès), ce qui n'est pas très convivial. Voici le code que j'utilise:
Private Function OpenExcelAttachment()
Dim MyXL As Object
Set MyXL = CreateObject("Excel.Application")
With MyXL
Dim FullPath As String, Name As String
Name = "\ExcelFile.xlsx"
FullPath = CurrentProject.Path & Name
.Workbooks.Open FullPath
.Visible = True
End With
Comment puis-je faire la fenêtre Excel apparaissent au premier plan (sur le dessus de toutes les fenêtres ouvertes) à la place?
Merci!
Il convient, par conséquent, il n'y a pas de problème avec votre code. Les programmes ont seulement une petite quantité de temps à définir eux-mêmes comme une fenêtre de premier plan, est un long temps de loadfile? Essayez de définir visible d'abord, puis de charger le fichier.
Merci pour la réponse! Le fichier est petit, donc il ne faut pas longtemps à tous. Jouer avec quand je visible n'a pas aidé non plus. Fait intéressant, j'ai découvert que si j'ouvre VBA avant d'appeler Excel, il fait afficher au premier plan! Cependant, si j'ai quitté l'Accès, de l'ouvrir à nouveau et appel Excel (dont le potentiel utilisateur pourrait le faire), il montre en arrière-plan...
Essayez Spy++ à partir de MS langages de programmation, outils de dossier ou le dossier tools du SDK Windows. Voir ce qui se passe en vous connectant tous les messages.
The system restricts which processes can set the foreground window. A process can set the foreground window only if one of the following conditions is true:
The process is the foreground process. The process was started by the foreground process. The process received the last input event. There is no foreground process. The foreground process is being debugged. The foreground is not locked (see LockSetForegroundWindow). The foreground lock time-out has expired (see SPI_GETFOREGROUNDLOCKTIMEOUT in SystemParametersInfo). Windows 2000/XP: No menus are active.
Merci pour la réponse! Le fichier est petit, donc il ne faut pas longtemps à tous. Jouer avec quand je visible n'a pas aidé non plus. Fait intéressant, j'ai découvert que si j'ouvre VBA avant d'appeler Excel, il fait afficher au premier plan! Cependant, si j'ai quitté l'Accès, de l'ouvrir à nouveau et appel Excel (dont le potentiel utilisateur pourrait le faire), il montre en arrière-plan...
Essayez Spy++ à partir de MS langages de programmation, outils de dossier ou le dossier tools du SDK Windows. Voir ce qui se passe en vous connectant tous les messages.
OriginalL'auteur Knodel | 2014-08-17
Vous devez vous connecter pour publier un commentaire.
Je voudrais d'abord vérifier déjà ouvert instance d'Excel. Si vous doit de permettre plusieurs instances de l'Application, alors il sera plus délicat. Si vous êtes OK avec seulement l'aide d'une instance de microsoft Excel, puis je pense que cela devrait fonctionner à l'aide de la AppActivate déclaration.
OriginalL'auteur David Zemens
Vous devez appeler
AllowSetForegroundWindow
avant de faire Excel visible. Je n'ai pas de développer en VBA, mais je pense que ça pourrait ressembler à ceci:OriginalL'auteur QuiOui
Un peu en retard à la fête ici,
(à l'aide d'Office 2013)
Si Excel n'est pas déjà ouvert, je trouve que:
Apporte la fenêtre Excel à l'avant si Excel n'est pas ouvert. Si Excel est déjà ouvert cependant, je trouve que je dois mettre invisible à faux d'abord, puis réinitialiser la valeur true pour obtenir la fenêtre à l'avant
Peut-être que cela devrait fonctionner?
EDIT:
En fait, ce qui semble fonctionner beaucoup mieux est AppActivate
Instruction AppActivate
OriginalL'auteur noelmcg