Supportnet Computer
Planet of Tech

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

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

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ß

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

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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: