Clever-Excel-Forum

Normale Version: Excel-Blatt minimieren - Outlook ausführen - Excel-Blatt maximieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Schönen guten Morgen allerseits,

bin gerade in den letzten Zügen zu einem umfangreichen Programm zur Lagerbestellung in Excel mittels VBA. Eine Kleinigkeit fehlt mir noch, sonst klappt alles:

Den folgenden Code habe ich gebastelt, um aus Excel heraus Outlook aufzurufen und gleichzeitig das Excel Blatt zu minimieren, so dass Outlook im Vordergrund steht.


Code:
Sub Mail()

Set objOutlook = CreateObject("Outlook.Application")

Set objMail = objOutlook.CreateItem(0)

Application.WindowState = xlMinimized

With objMail

    .To = [email=asdf@test.com]asdf@test.com[/email]

    .Subject = "testweise"

    objMail.Display

End With

End Sub

Soweit klappt auch alles.

Nur wie bekomme ich das hin, wenn ich Outlook schließe, dass das Excel-Blatt dann wieder in seiner vorherigen Ansicht erscheint? Da versag ich momentan ein bisschen.

Die Zeile

Application.WindowState = xlMinimized

habe ich eingebaut, weil mein Excel-Fenster sonst nicht zu sehen ist und das Outlook-Fenster dabei in der Taskleiste blinkt, also nicht wirklich benutzerfreundlich.

Ich dachte, ich schreib nach "End With" einfach

Application.WindowState = xlMaximized

Gute Idee, dacht ich mir, und jetzt sieht mein Code so aus:


Code:
Sub Mail()

Set objOutlook = CreateObject("Outlook.Application")

Set objmail = objOutlook.CreateItem(0)

Application.WindowState = xlMinimized

With objmail

    .To = [email=asdf@testweise.de]asdf@testweise.de[/email]

    .Subject = "Testdingens"

    objmail.Display

End With

Application.WindowState = xlMaximized

End Sub

Sieht auch recht gut aus dachte ich so bei mir, ABER: Jetzt wird das Excel-Blatt ausgeblendet, Outlook ganz kurz eingeblendet und dann das Excel-Blatt sofort wieder eingeblendet. Also eher wenig hilfreich bis unmöglich.

Deswegen meine Frage: Wie schaff ich es, dass das Excel-Blatt minimiert wird, Outlook eingeblendet wird (und zwar so lange bis Outlook wieder geschlossen wird) und danach das vorherige Excel-Blatt wieder maximiert wird.

Bin nicht soo fit in VBA und würde mich umso mehr um möglichst detaillierte und nachvollziehbar kommentierte Anregungen freuen!

Ich wünsch Euch einen schönen TAg!
Jochem

P.S.: Ich seh grad, dass ich den Beitrag im falschen Forum untergebracht hab. Nicht Excel-Forum, sondern VBA-Forum. Bitte um Verzeihung :22:
Hi Jochem,


Zitat:P.S.: Ich seh grad, dass ich den Beitrag im falschen Forum untergebracht hab. Nicht Excel-Forum, sondern VBA-Forum. Bitte um Verzeihung [img]
Dateiupload bitte im Forum! So geht es: Klick mich!
]

alles OK - du bist im Excelforum richtig damit. Das "VBA-Forum" ist ein Unterforum von Beispiele und Workshops.

Den anderen Beitrag habe ich gelöscht.
Hallo Jochem
Wieso willst Du minimieren? Bei meinen Applikationen kommt Outloock mit diesem Code dank dem .Display in den Vordergrund:

Code:
Sub Mail()
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
   .To = [email=asdf@test.com]asdf@test.com[/email]
   .Subject = "testweise"
   .Display
End With
End Sub
Hallo Helvetier,
leider funktioniert das bei mir nicht. (Windows 10 mit allen Updates und Office 365 komplett up to date). Outlook bleibt dabei dezent auf der Taskleiste kleben, blinkt zwar, kommt aber nicht in den Vordergrund. Ich hab keine Ahnung, wieso, aber es ist leider so. Deswegen wollt ich das Excel Blatt minimieren, Outlook ausführen,-beenden, und dann soll das Excelblatt wieder in den Vordergrund rücken.
Weißt Du oder jemand anders hier ne Lösung?

Vielen Dank!
Jochem
Hi Steve1da,
Merci für den Hinweis. Obwohl ich mir doch ne Lösung meines Problems erhofft hatte.
Ich wusste nicht, dass man Beiträge verlinken muss. Ist mir komplett neu, sorry Huh
Keiner ne Idee zur Problemlösung?
Ich hoff mal weiter und wünsche nen schönen Abend!
Jochem
Hallo Jochem

Hast eigentlich auch alles ordentlich deklariert und wo (Dim oder Public)?
Dim objOutlook As Object, objMail As Object

Hast Du das schon versucht:

Code:
Sub Mail()
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
   .To = [email=asdf@test.com]asdf@test.com[/email]
   .Subject = "testweise"
   .Display
das >>> objOutlook.Application.Activate
oder das >>>>    .Visible = True
    
End With
End Sub
Hallo Helvetier,

merci nochmal für Deine Antwort. Das Deklarieren habe ich doch glatt übersehen. Liegt wohl dadran, dass ich in VBA eher ne rechte Niete bin. Ich bin überrascht, dass ich überhaupt so weit gekommen bin, das alles halbwegs läuft.

Wenn ich Dich soweit verstanden hab, sollte das dann so aussehen in etwa zumindest:

Public Sub Mail()
Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
   .To = asdf@test.com
   .Subject = "testweise"
   .Display
    objOutlook.Application.Activate
    oder das >>>>    .Visible = True 
End With

End Sub

Oder so in etwa. Lieg ich da richtig? Wäre schön, wenn Du mir bißchen weitere Unterstützung geben könntest, ob das denn so passen würde.

Vielen lieben Dank und einen guten Morgen wünscht
Jochem
Hallo Jochem
Ob das passt, kannst nur Du sagen: wenn das Problem behoben ist, ist ok. Allerdings musst Du im Code noch das nicht Benötigte auskommentieren (mit ': die werden dann grün und bedeutungslos) oder löschen: Es darf im code keine roten Einträge haben. Zudem kannst Du im VBA-Editor Debuggen > Kompilieren von VBA Projekten machen. Wenn er da nicht meckert ist schon einiges -aber nicht unbedingt alles- gut.

Code:
Public Sub Mail()
Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
   .To = asdf@test.com
   .Subject = "testweise"
   .Display
   objOutlook.Application.Activate
    '.Visible = True
End With
End Sub
e roten Einträge haben.
Hallo Helvetier,

vielen Dank für Deine Infos.

Es lag offensichtlich an der nicht durchgeführten Deklaration der Variablen. Seitdem klappt alles wie am Schnürchen.

Merci vielmals Blush

Jochem