Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
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

Per VBA komplett neue Applikation

Per VBA komplett neue Applikation
11.12.2020 14:08:32
M.A.
Hallo zusammen,
unsere Mitarbeiter nutzen ein Programm (Userform) für die tägliche Arbeit.
Im Hintergrund gibt es entsprechend viele Tabellenblätter, die der Mitarbeiter gar nicht erst sehen soll.
(Nein, ausblenden oder schreibschützen geht nicht wegen der Struktur/ xVeryHidden - Die Mappe soll gar nicht erst aufgehen)
Wird derzeit durch

Application.Visible = False 
bei Workbook Open gelöst.
Soweit so gut.
Öffnet der Mitarbeiter IM ANSCHLUSS eine andere Excel, wird jedoch die dahinterliegende Mappe wieder angezeigt.
Die Mitarbeiter öffnen den ganzen Tag weitere Excel Dokumente, die unabhängig laufen müssen.
Habe es schon mit einer Zwischendatei und New Excel etc. versucht.
Er öffnet eine neue Instanz in der selben Applikation, jedoch keine neue Applikation selbst.
Wenn ich mit Rechtsklick auf eine bereits bestehende Mappe in der Taskleiste gehe und darüber dass wiederum eine neue Excel Mappe öffne, wird diese in einer komplett anderen Applikation geöffnet. Dies ist dann auch im Taskmanager als 2x Excel zu sehen.
Bei der Lösung mit

Set Excel = WScript.CreateObject("Excel.Application")
bei einer .vbs oder
Dim NewExcel As Excel.Application
Set NewExcel = CreateObject("Excel.Application")
werden jeweils nur neue Instanzen generiert.
Habe sogar versucht mit der .vbs eine weitere Zwischendatei zu öffnen, die wiederum das Programm öffnet. Wieder nur eine neue Instanz in der selben Applikation. Im Taskmanager dann Microsoft Excel - (2).
Ich verzweifle extrem an diesem Problem, mir fällt aber auch keine Alternativlösung ein.
Vielen Dank vorab für etwaige Vorschläge.
M.A.

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA komplett neue Applikation
11.12.2020 14:37:38
MatthiasG
Hallo M.A.,
vor Jahren hab ich mal diese Lösung entwickelt:
(in DieseArbeitsmappe)

Private Sub Workbook_Deactivate()
Dim n As String
If Workbooks.Count > 1 Then
Application.EnableEvents = False
With ActiveWorkbook
n = .FullName
.Close savechanges:=False
End With
Application.EnableEvents = True
Dim xlApp As Object
Set xlApp = CreateObject("Excel.Application")
On Error Resume Next
If Dir(n)  "" Then
MsgBox "open"
xlApp.Workbooks.Open Filename:=n
If Err.Number > 0 Then
xlApp.Quit
Else
xlApp.Application.Visible = True
End If
Else
xlApp.Workbooks.Add
xlApp.Application.Visible = True
End If
Set xlApp = Nothing
End If
End Sub

Das schließt eine entdeckte Mappe sofort und öffnet sie in einer neuen Instanz.
Musst du allerdings selbst nochmal testen, ich habe mich schon lange nicht mehr damit beschäftigt.
Gruß Matthias
Anzeige
AW: Per VBA komplett neue Applikation
11.12.2020 15:23:20
M.A.
Fast, ich fange fast schon an zu grinsen :D
Leider funktioniert es in Kombination mit einer Userform und den unten stehenden Codes nicht:
Private Sub UserForm_Initialize()
Application.Visible = False
End Sub
Private Sub Workbook_Open()
UserForm1.Show
End Sub
Es lässt sich dann gar keine andere Excel mehr öffnen.
Ggf. ist hier ja nur eine Änderung nötig.
Habe es auch mit
Set myShell = CreateObject("Wscript.Shell")
Set oAppShell = CreateObject("Shell.Application")
oAppShell.MinimizeAll
myShell.Run "Excel.exe /x, " & myShell.SpecialFolders("G:\XXXXXXXXX") & "Test.xlsm", False
oAppShell.TileVertically
versucht, er öffnet zwar eine komplett neue Instanz, öffnet darin jedoch nicht die gewünschte.
Anzeige
AW: Per VBA komplett neue Applikation
11.12.2020 15:27:34
MatthiasG
Hallo M.A.,
starte die UF mal so:
UserForm1.Show vbModeless
Könnte allerdings andere unerwünschte Folgen haben...
Gruß Matthias
AW: Per VBA komplett neue Applikation
11.12.2020 15:47:55
M.A.
Super :D
Funktioniert, vielen lieben Dank.
Was könnten denn für "Probleme" auftreten?
AW: Per VBA komplett neue Applikation
11.12.2020 15:51:24
MatthiasG
Hallo M.A.,
freut mich, dass ich helfen könnte.
Welche Probleme...? Naja, wenn nur ein UF offen ist, dürfte nichts passieren. Das modale Anzeigen der UF (Standardeinstellung) verhindert, dass der Focus zurück auf die Mappe geht. Wenn die aber gar nicht sichtbar ist, sollte nix passieren.
Spiel' einfach mal einen DAU und teste gründlich durch.
Gruß Matthias
Anzeige
AW: Per VBA komplett neue Applikation
11.12.2020 15:54:42
M.A.
Ups, doch einen Fehler entdeckt. Meine Userform öffnet und schreibt in eine andere Datei, diese wird natürlich nun auch als neue Instanz geöffnet. Kann man bestimmte Dateien von deinem Code ausnehmen?
Danke nochmal
AW: Per VBA komplett neue Applikation
11.12.2020 16:06:40
MatthiasG
Hallo M.A.,
kann man, ja.
z.B. indem du vor dem Öffnen der erlaubten Datei ein
Application.EnableEvents = False

in den Code schreibst (und es nach dem Schließen wieder auf True setzt!). Das deaktiviert vorübergehend die Ereignisprozeduren.
Oder du prüfst den Pfad der Datei (der in meinem Code in der Variablen n gespeichert wird).
Ersteres scheint mir am einfachsten.
Gruß Matthias
Anzeige
AW: Per VBA komplett neue Applikation
11.12.2020 17:00:45
M.A.
Ein Traum. Es funktioniert alles wunderbar !!! Vielen Dank nochmal !
AW: Per VBA komplett neue Applikation
11.12.2020 17:20:51
MatthiasG
Hallo M.A.,
danke für die nette Rückmeldung.
Eine Frage noch: Was passiert, wenn die Anwender erst eine Excel-Datei und dann deine "Spezialdatei" öffnen?
Gruß Matthias
AW: Per VBA komplett neue Applikation
11.12.2020 19:35:32
M.A
Ohne meine zusätzlich verwendete .vbs Datei zum starten, würden die vorher geöffneten Fenster auch mit ausgeblendet.
In Kombination mit dem unten stehenden VBS Code bleiben aber alle separat offen, nur das mit der Userform nicht.
Alles perfekt ! :)
Option Explicit
Dim Excel, FSO, Path
Set Excel = WScript.CreateObject("Excel.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.GetParentFolderName(WScript.ScriptFullName)
Excel.Visible = True
Excel.Workbooks.Open  "C:\Users\Desktop\Test.xlsm"
Set Excel = Nothing
Set FSO = Nothing
WScript.Quit

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige