Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1068to1072
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

SendKeys

SendKeys
18.04.2009 22:29:16
Horst
Hallo Excel-Profis!
Wie setze ich den Befehl "SendKeys" korrekt ein, wenn er erst nach 6 Sekunden ausgeführt werden soll.
Folgender Code:
Application.SendKeys "{ENTER}", True
Application.Wait (Now + TimeValue("00:00:06"))
funktioniert irgendwie nicht. Es geht darum, dass per VBA mittels ".Send-Befehl" ein Email in MS Outlook 2003 generiert, das Senden aber durch eine Sicherheitsabfrage verhindert wird. Das erscheinende Fenster: "Möchten Sie das zulassen? soll mit {LEFT} und {ENTER} bestätigt werden. Habe auch was gelesen von Sleep 6000. Sleep funktioniert aber offenbar nur in der englischen Excel-Version. Hat jemand eine Idee?

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dies wird nicht gehen. Frage offen. oT.
18.04.2009 23:11:47
Tino
AW: Dies wird nicht gehen. Frage offen. oT.
18.04.2009 23:59:01
Uwe
Hi,
wenn Tino sagt es klappt nicht, glaube ich ihm. Ich bin da kein Spezialist. Aber Sleep ist eine API Funktion, die auch in deutschen Versionen klappt und zwar in der Art:

Option Explicit
Declare Sub Sleep Lib "Kernel32.dll" (ByVal Schlafzeit As Long)
Sub Schlafen
' Dein Code
Sleep 1500
'Dein Code
End Sub


Das würede den Code 1500 ms (1,5 Sekunden) warten lassen.
Zu dem Thema müsstest Du aber auch hier im Archiv einiges finden.
Gruß
Uwe
(:o)

Das geht schon deshalb nicht, weil die...
19.04.2009 06:32:29
Luc:-?
...Reihenfolge der Befehle falsch rum ist!
Gruß Luc :-?
Anzeige
AW: SendKeys
19.04.2009 08:37:17
Tino
Hallo,
diese Sicherheitsabfrage kommt erst beim Befehl Send.
Auch wenn man mittels Api OnTime ein zusätzliches Makro für die Tastaturbefehle losschickt,
kommen diese nicht dort an.
Man könnte es mal mittels VBS- Skript versuchen, aber ich glaube dass dies nicht funzt.
Ich lass die Frage mal offen, vielleicht kennt sich einer besser damit aus.
Gruß Tino
Frage offen vergessen! oT.
19.04.2009 08:38:02
Tino
Versuche es mal hiermit
19.04.2009 09:27:14
Tino
Hallo,
es wird ein Script erstellt und ausgeführt, am Ende wird diese Datei wieder gelöscht.
Option Explicit
Public Declare Function ShellExecute Lib "shell32.dll" Alias _
    "ShellExecuteA" (ByVal hWnd As Long, _
                     ByVal lpOperation As String, _
                     ByVal lpFile As String, _
                     ByVal lpParameters As String, _
                     ByVal lpDirectory As String, _
                     ByVal nshowcmd As Long) As Long
Dim sFile As String

Sub MailSenden()
Dim MyOutApp As Object, MyMessage As Object



Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
Call SicherheitPress 'Scriptdatei erstellen 
    
    With MyMessage
        .To = "Excel@tinomargit.com"
        .Subject = "hier der Betreff"
        .body = "Hallo, hier die gewünschte Grafik" & String(3, vbCrLf)
        .Send
    End With

'Script löschen 
Kill sFile
End Sub

Private Sub SicherheitPress()
Dim F As Integer
Dim sLines As String

sLines = "Set ws = CreateObject(""Wscript.shell"") " & vbCrLf & _
        "WScript.sleep 7000" & vbCrLf & _
        "ws.SendKeys ""{Left}""" & vbCrLf & _
        "ws.SendKeys ""{Enter}"""


sFile = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
sFile = sFile & "VBSScript.vbs"
  
  F = FreeFile
  Open sFile For Output As #F
  Print #F, sLines
  Close #F

'Script starten 
Call ShellExecute(0, "open", sFile, "", "", 0)
End Sub


Gruß Tino

Anzeige
Weshalb so umständlich?
19.04.2009 10:35:44
mumpel
Hallo!
Es geht auch viel einfacher. Einfach .Sendcolor> durch folgenden Code ersetzen. Damit erspart man sich die Sicherheitsfrage. Eventuell noch olAppcolor> durch die Objektvariable ersetzen, mit welcher Du die Outlookinstanz erstellst.
Oder im Forenarchiv nach Redemptioncolor> suchen.
Gruß, René
hast recht, gute Idee...
19.04.2009 10:46:12
Tino
Hallo,
aber da müsste zumindest noch Display mit rein.
Option Explicit
Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer

Private Declare Sub keybd_event Lib "user32" ( _
  ByVal byteVirtualKeycode As Byte, _
  ByVal byteScan As Byte, _
  ByVal lFlags As Long, _
  ByVal lExtraInfo As Long)

Sub MailSenden()
Dim MyOutApp As Object, MyMessage As Object

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
    
    With MyMessage
        .To = "Mustermann@Proviter.de"
        .Subject = "hier der Betreff"
        .body = "Hallo," & String(3, vbCrLf) & "das ist ein test!"
        .Display
        AppActivate .Subject 'Titel der Mail, eventuell anpassen 
    End With

Application.SendKeys "%s"
Call CheckNumLock 'Bug bei SendKeys, Num- Taste wieder aktivieren. 
End Sub

Private Sub CheckNumLock()
Const KEYEVENTF_KEYUP As Long = &H2
Const VK_NUMLOCK = &H90

If Not (GetKeyState(vbKeyNumlock) = 1) Then
  keybd_event VK_NUMLOCK, 1, 0, 0
  keybd_event VK_NUMLOCK, 1, KEYEVENTF_KEYUP, 0
End If

End Sub


Gruß Tino

Anzeige
Nachtrag
19.04.2009 10:47:12
mumpel
Zuvor natürlich mit .Displaycolor> die Mail anzeigen lassen
Tino war schneller ;) owT.
19.04.2009 10:48:15
mumpel
AW: Tino war schneller ;) owT.
19.04.2009 10:53:46
mumpel
Hallo Tino!
Ich würde aber SendKeys mit meinem Code machen. Den Deine Version mit Application.SendKeys funktioniert nicht auf allen Systemen. Daher wäre SendKeys über WsShell besser. Darauf hat schon ein User hier im Forum hingewiesen.
Gruß, René
Frage?
19.04.2009 11:37:07
Tino
Hallo,
hast Du einen Link zu diesem Hinweis?
Gruß Tino
AW: Frage?
19.04.2009 11:44:53
mumpel
Müsste ich mal schauen. Wird aber heute nichts mehr, muss/darf gleich zur Spätschicht.
ok. wäre super
19.04.2009 11:48:59
Tino
Hallo,
würde mich schon interessieren unter welchen System- Voraussetzungen dies nicht klappt.
Viel Spaß beim arbeiten.
Gruß Tino
Anzeige
AW: ok. wäre super
19.04.2009 11:52:53
mumpel
Das Problem ist, dass die Suche danach sehr schwierig ist. Vor allem wenn man nicht mehr weiss, ob es wirklich in diesem Forum war oder in einem anderen. Und bei 8 Excelforen danach zu suchen, wird sehr viel schwieriger. Vielleicht schickst Du mir eine Mail (siehe Profil), dann könnte ich Dir das Ergebnis schicken. Falls die Suche länger dauern sollte.
AW: ok. wäre super
19.04.2009 12:05:41
Tino
Hallo,
na so wichtig ist es nun auch wieder nicht, dass Du Tag und Nacht mit der Suche verbringen musst.
Wenn es mal soweit ist und es funktioniert nicht, werde ich dass auch bestimmt selbst merken und mich an diesen Beitrag erinnern.
Wünsche noch einen schönen Sonntag.
Gruß Tino
Anzeige
AW: Frage?
19.04.2009 11:59:39
Horst
Ein Link wäre interessant, würd' mich auch interessieren.
Auf alle Fälle besten Dank für Eure Vorschläge an Mumpel, Tino und Co!
AW: Frage?
20.04.2009 22:52:53
detlef
Hallo Horst,
ich habe das mit dem Shareware-Programm Express ClickYes gelöst. Vor dem Versand das Progrämmchen starten und es übernimmt den Click bei der Sicherheitsabfrage. Benutze ich schon seit Jahren und funzt ohne Probleme.
Gruß Detlef

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige