Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel-Blatt minimieren - Outlook ausführen - Excel-Blatt maximieren
#1
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:
Antworten Top
#2
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.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
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
Gruss

Ein Lob ist der Lohn
Ein Tadel der Ansporn
Antworten Top
#4
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
Antworten Top
#5
Hola,

zur Info...

http://www.office-fragen.de/index.php/to...579.0.html

Gruß,
steve1da
Antworten Top
#6
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
Antworten Top
#7
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
Gruss

Ein Lob ist der Lohn
Ein Tadel der Ansporn
Antworten Top
#8
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
Antworten Top
#9
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.
Gruss

Ein Lob ist der Lohn
Ein Tadel der Ansporn
Antworten Top
#10
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste