Supportnet / Forum / Tabellenkalkulation
Makro Ablauf einhalten
Frage
Hallo, gibt es eine Möglichkeit damit der Ablauf das Makros genau eingehlaten wird. Ich hoffe jemand hat einen Tipp der mir weiter hilft. Gruß Kerstin
Sub MakroX()
´ Tastenkombination: Strg+x
Windows("VersandmeldungX.xls").Activate
Range("C3:P3").Select
Selection.Copy
Windows("SU-Nr.xls").Activate
ActiveWindow.WindowState = xlNormal
[C:C].SpecialCells(xlBlanks).Cells(1).Select
ActiveSheet.Paste
Windows("VersandmeldungX.xls").Activate
Range("A3").Select
Selection.Copy
Windows("SU-Nr.xls").Activate
ActiveWindow.WindowState = xlNormal
[A:A].SpecialCells(xlBlanks).Cells(1).Select
ActiveSheet.Paste
ActiveWorkbook.Save
Range(ActiveCell, Cells(ActiveCell.Row + 0, ActiveCell.Column + 1)).Select
Selection.Copy
Windows("VersandmeldungX.xls").Activate
Range("A3").Select
ActiveSheet.Paste
Windows("VersandmeldungX.xls").Activate
If Range("C3").Value = "SIM" Or Range("C3").Value = "sim" Or Range("C3").Value = "Sim" Then
Dim strDateiname As String
Dim strAntwort As String
strDateiname = Range("B3").Value & Range("C3").Value & ".XLS"
ActiveWorkbook.SaveAs ("C:\Dokumente und Einstellungen\Admin\Desktop\Versand\USA\" & strDateiname)
Application.DisplayAlerts = False
Range("A2:P30").Select
Selection.Copy
ActiveWorkbook.Saved = True
ActiveWindow.Close
Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now
Mail.To = "Muster.@de"
Mail.cc = ""
Mail.bcc = ""
Mail.body = Chr(13)
Mail.Display
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "{TAB}"
Application.SendKeys ("^v")
Application.SendKeys "%s"
Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls"
[A:A].SpecialCells(xlBlanks).Cells(1).Select
ActiveCell.Value = Date
Range("C3").Select
Else:
strDateiname = Range("B3").Value & Range("C3").Value & ".XLS"
ActiveWorkbook.SaveAs ("O:\Versandmeldung\" & strDateiname)
ActiveWorkbook.Saved = True
ActiveWindow.Close
Workbooks.Open FileName:="O:\Versandmeldung\VersandmeldungX.xls"
[A:A].SpecialCells(xlBlanks).Cells(1).Select
ActiveCell.Value = Date
Range("C3").Select
End If
End Sub
Antwort 1 von Event
Hallo, wo zwickts denn?
Antwort 2 von fedjo
Hallo,
beim einfügen mit "Application.SendKeys ("^v")" wird der Inhalt nicht immer in Outlook eingefügt, sondern schon in die wieder geöffnete Tabelle "Versandmeldung"
Gruß
Kerstin
beim einfügen mit "Application.SendKeys ("^v")" wird der Inhalt nicht immer in Outlook eingefügt, sondern schon in die wieder geöffnete Tabelle "Versandmeldung"
Gruß
Kerstin
Antwort 3 von primut
Hi Kerstin,
ich hab´s nur schnell überflogen, deshalb erstmal nur eine allgemeine Antwort:
Die Anweisung "Application.SendKeys ("^v")" sendet die entsprechenden Zeichen immer nur an die jeweils aktuelle Anwendung.
Aktuell ist von der Sache her die Anwendung bzw. das Objekt, welches den Coursor enthält.
Du mußt halt sicherstellen, daß entsprechende Outlook-Anwendung immernoch aktuell ist und nicht durch die neu geöffnete Tabelle abgelöst wurde.
Spontan würd ich vorschlagen, vor Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls" auch noch eine kleine Sicherheitspause einzubauen, zb 2s Application.Wait (Now + TimeValue("0:00:02"))
Gruß Primut
ich hab´s nur schnell überflogen, deshalb erstmal nur eine allgemeine Antwort:
Die Anweisung "Application.SendKeys ("^v")" sendet die entsprechenden Zeichen immer nur an die jeweils aktuelle Anwendung.
Aktuell ist von der Sache her die Anwendung bzw. das Objekt, welches den Coursor enthält.
Du mußt halt sicherstellen, daß entsprechende Outlook-Anwendung immernoch aktuell ist und nicht durch die neu geöffnete Tabelle abgelöst wurde.
Spontan würd ich vorschlagen, vor Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls" auch noch eine kleine Sicherheitspause einzubauen, zb 2s Application.Wait (Now + TimeValue("0:00:02"))
Gruß Primut
Antwort 4 von Event
Hallo
Aus Der VBA-Hilfe:
SendKeys string[, wait]
Die Syntax der SendKeys-Anweisung verwendet die folgenden benannten Argumente:
Teil Beschreibung
string Erforderlich.
Ein Zeichenfolgenausdruck, der die zu sendende Tastenfolge angibt.
wait Optional.
Ein Wert vom Typ Boolean, der den Wartemodus angibt. Wenn der Wert False ist (Voreinstellung), setzt die Prozedur die Ausführung fort, unmittelbar nachdem die Tastenfolge gesendet wurde. Wenn der Wert True ist, muß die Tastenfolge verarbeitet werden, bevor die Prozedur die Ausführung fortsetzen kann.
Gruß
Aus Der VBA-Hilfe:
SendKeys string[, wait]
Die Syntax der SendKeys-Anweisung verwendet die folgenden benannten Argumente:
Teil Beschreibung
string Erforderlich.
Ein Zeichenfolgenausdruck, der die zu sendende Tastenfolge angibt.
wait Optional.
Ein Wert vom Typ Boolean, der den Wartemodus angibt. Wenn der Wert False ist (Voreinstellung), setzt die Prozedur die Ausführung fort, unmittelbar nachdem die Tastenfolge gesendet wurde. Wenn der Wert True ist, muß die Tastenfolge verarbeitet werden, bevor die Prozedur die Ausführung fortsetzen kann.
Gruß
Antwort 5 von fedjo
Hallo Primut,
das finde ich eine gute Idee, kann aber erst morgen einen Test in der Arbeit durchführen, da ich zu Hause nur Outlook Express benutze.
Ich werde mich aber nach dem Versuch noch mal melden.
Danke
Gruß
Kerstin
das finde ich eine gute Idee, kann aber erst morgen einen Test in der Arbeit durchführen, da ich zu Hause nur Outlook Express benutze.
Ich werde mich aber nach dem Versuch noch mal melden.
Danke
Gruß
Kerstin
Antwort 6 von fedjo
Hallo,
ich habe jetzt das Makro getestet mit einer zweiten Sicherheitspause, auch dadurch ist die Outlook-Anwendung nicht immer aktuell, manchmal wird sie nur in der Taskleiste abgelegt.
Wie kann ich sicherstellen, daß die Outlook-Anwendung noch aktiv ist beim einfügen?
Ich hoffe Ihr habt eine Idee die mir weiterhilft.
Gruß
Kerstin
Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now
Mail.To = "Muster.@de"
Mail.cc = ""
Mail.bcc = ""
Mail.body = Chr(13)
Mail.Display
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "{TAB}", Wait = True
Application.SendKeys ("^v") , Wait = True
Application.SendKeys ("%s") ,Wait = True
Application.Wait (Now + TimeValue("0:00:02"))
Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls"
ich habe jetzt das Makro getestet mit einer zweiten Sicherheitspause, auch dadurch ist die Outlook-Anwendung nicht immer aktuell, manchmal wird sie nur in der Taskleiste abgelegt.
Wie kann ich sicherstellen, daß die Outlook-Anwendung noch aktiv ist beim einfügen?
Ich hoffe Ihr habt eine Idee die mir weiterhilft.
Gruß
Kerstin
Dim ol, Mail As Object
Set ol = CreateObject("Outlook.Application")
Set Mail = ol.CreateItem(0)
Mail.Subject = " Muster " & Now
Mail.To = "Muster.@de"
Mail.cc = ""
Mail.bcc = ""
Mail.body = Chr(13)
Mail.Display
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "{TAB}", Wait = True
Application.SendKeys ("^v") , Wait = True
Application.SendKeys ("%s") ,Wait = True
Application.Wait (Now + TimeValue("0:00:02"))
Workbooks.Open FileName:="C:\Dokumente und Einstellungen\Admin\Desktop\Versand\VersandmeldungX.xls"

