Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1736to1740
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Excel in den Vordergrund

Excel in den Vordergrund
10.02.2020 07:51:03
Thomas
HalloExcelfreunde,
ich erstelle mit dem untenstehenden Skript einen neue Excel Instanz.
In dieser starte ich meine Arbeitsmappe, wobei dann gleich meine Userform startet. Der Anwender sieht nur die gestartete Userform, nicht das startende Excel.
Nun habe ich das Problem das sich diese Mappe ( Userform ) immer hinter dem Explorer versteckt.
objExcel.Activate funktioniert leider auch nicht.
Hat jemand ein Tipp für mich wie ich diese Instanz in den Vordergrund bekomme?
dim objExcel
intTimeout = 3 'Number of seconds to wait
strMessage = " Ok ich öffne die Datei"
strTitle = "Ich starte"
Set WshShell = CreateObject("WScript.Shell")
intResult = WshShell.Popup(strMessage, intTimeout, strTitle)
'##########################################################################
'MsgBox " Ok ich starte bitte warten "
set objExcel= createobject("Excel.Application")
'objExcel.xlMaximized
objExcel.Application.IgnoreRemoteRequests = False
With objExcel
.ScreenUpdating = True 'False
.DisplayAlerts = True
'.EnableEvents = True
.visible = false 'true
'
.Workbooks.Open "\\rc-de-de1\Ftest.xlsb", 0, True
.visible = false
End With
'MsgBox " Ok bin fertig die Datei ist offen. Viel Spass "
Set WshShell = Nothing
Set objShell = Nothing
Set objExcel = Nothing
----------------------------------------------------
Mit diesem Skript erscheint meine Userform zwar in den Vordergrund:
'Set Shell = CreateObject("WScript.Shell")
' http://www.microsoft.com/technet/scriptcenter/guide/sas_wsh_pkoy.mspx?mfr=true
' Library IWshRuntimeLibrary C:\WINDOWS\System32\wshom.ocx Windows Script Host
' Object Mode
Const vbHide = 0
Const vbMaximizedFocus = 3
Const vbMinimizedFocus = 2
Const vbMinimizedNoFocus = 6
Const vbNormalFocus = 1
Const vbNormalNoFocus = 4
Const vbWait = TRUE
Const vbContinue = False
Set WshShell = CreateObject("WScript.Shell")
'With WshShell
'.ScreenUpdating = False
'.DisplayAlerts = false
'.EnableEvents = false
'.visible = false 'true
'End With
WshShell.run "excel.exe ""\\rc-de-de1\Ftest.xlsb""", vbNormalFocus , vbContinue
Aber leider bekomme ich bei diesem Teil des Scripts:
'With WshShell
'.ScreenUpdating = False
'.DisplayAlerts = false
'.EnableEvents = false
'.visible = false 'true
'End With
eine Fehlermeldung.
So das ich immer erst das Excel Fenster sehe und anschließend die Meldung das Excel schreibgeschützt gestartet wird , bekomme.
Ich möchte aber gern das der Anwender nur das Ergebnis, eine gestartete Userform im Vordergrund sieht.
Kann mir jemand ein Tipp geben wie ich dieses Dilemma lösen kann?
Habt schon mal recht vielen dank für euer Interesse.
mfg thomas

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel in den Vordergrund
10.02.2020 08:30:14
volti
Hallo Thomas,
zunächst zum Problem der Fehlermeldung:
Du referenzierst die Anweisungen auf das Shell-Object. Das geht natürlich nicht. Du musst es auf das Excel-Object referenzieren.
With Application
.ScreenUpdating = False
.DisplayAlerts = false
.EnableEvents = false
.visible = false 'true
End With
sollte funktionieren.
Um eine Userform dauerhaft in den Vordergrund zu setzen, kannst Du folgende Anweisung ausführen (ggf. anpassen):
Option Explicit
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hWnd As LongPtr, ByVal hWndInsertAfter As LongPtr, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const cFLAGS = &H3
Sub Test()
'Userform in den Vordergrund
 SetWindowPos FindWindow(vbNullString, UserForm1.Caption), HWND_TOPMOST, 0, 0, 0, 0, cFLAGS
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Userform im Vordergrund
10.02.2020 08:45:08
Dieter(Drummer)
Hallo Thomas,
evtl. hilft Dir das weiter, die Userform beim Start im Vodergrund zu sehen:

Sub xy ()

Sub Userform ()
UserForm1.Show
AppActivate UserForm1.Caption
End Sub
Gruß, Dieter(Drummer)
funktioniert besten dank
11.02.2020 04:49:11
Thomas
Hallo Volte und Dieter,
dies
AppActivate UserForm1.Caption
hat geholfen.
Dies
With Application
.ScreenUpdating = False
.DisplayAlerts = false
.EnableEvents = false
.visible = false 'true
End With
funktioniert leider nicht.
Die API Lösung funktioniert auch.
Habt recht vielen dank für eure Vorschläge.
mfg thomas
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige