Registriert seit: 07.03.2018
Version(en): 2010
Hallo zusammen,
ich möchte einen Wert aus einem externen Programm per SendKeys "^c" in die Zwischenablage kopieren. Klappt soweit auch.
Nun möchte ich, dass dieser Wert = "rot" sein soll.
Sofern es passt, dann soll der Code weiterlaufen.
Sofern der Wert in der Zwischenablage nicht "rot" ist, soll der Code mit einer Meldung stoppen.
Wie lautet der Code dafür :( ?
Ich schaffe es einfach nicht...
Registriert seit: 17.04.2019
Version(en): M$ 365 AfE v2009 / Office2013
Hi,
Zitat:Nun möchte ich, dass dieser Wert = "rot" sein soll.
Wie meinen?
Wie holst Du den bisher Deine Werte aus der Zwischenablage resp. Clipboard?
Poste mal Deine Versuche...
Registriert seit: 07.03.2018
Version(en): 2010
ich habe meine kläglichen Versuche schon gelöscht.
Code:
SendKeys "^c"
Text_aus_Zwischenablage = "rot"
so habe ich es mir vorgestellt.
Ich möchte, dass der Code nur dann weiterläuft, wenn aus dem externen Programm das Wort "rot" rauskopiert wurde.
Daher wollte ich den Text aus der Zwischenablage mit "rot" abgleichen.
sofern dies nicht passt, soll ein Abbruch erfolgen.
Registriert seit: 05.09.2019
Version(en): Office 365
27.09.2019, 10:14
(Dieser Beitrag wurde zuletzt bearbeitet: 27.09.2019, 10:15 von UweD.)
Hallo
so???
Code:
Sub ZwischenAblage()
' Zwischenablage ausgeben
' Ein Verweis auf Microsoft Forms 2.X Object Library
' muss gesetzt sein
Dim oTest As DataObject
Set oTest = New DataObject
oTest.GetFromClipboard
If oTest.GetText(1) = "rot" Then
MsgBox "Hurra , rot"
Else
MsgBox "Kein Treffer"
Exit Sub
End If
'Weiter mit deinem Code
End Sub
LG UweD
Folgende(r) 1 Nutzer sagt Danke an UweD für diesen Beitrag:1 Nutzer sagt Danke an UweD für diesen Beitrag 28
• pfann
Registriert seit: 07.03.2018
Version(en): 2010
perfekt, vielen Dank für deine Hilfe! Sensationell
Registriert seit: 07.03.2018
Version(en): 2010
30.09.2019, 09:19
(Dieser Beitrag wurde zuletzt bearbeitet: 30.09.2019, 09:19 von pfann.)
ich habe diesen code nun an vier stellen eingesetzt.
Code:
Dim oTest As DataObject
Set oTest = New DataObject
oTest.GetFromClipboard
If oTest.GetText(1) = "rot" Then
MsgBox "Hurra , rot"
Else
MsgBox "Kein Treffer"
Exit Sub
End If
funktioniert auch, bis auf an der vierten stelle.
den code für die stelle 2, 3 und 4 habe ich dahingehend abgeändert, dass ich an das oTest jeweils eine 1, 2 bzw. 3 eingefügt habe.
der letzte code lautet:
Code:
Dim oTest3 As DataObject
Set oTest3 = New DataObject
oTest3.GetFromClipboard
If oTest3.GetText(1) = "Über" Then
Else
MsgBox "Kein Treffer"
Exit Sub
End If
hier meldet mir excel immer "kein Treffer", obwohl der kopierte text 1:1 übereinstimmt mit dem geforderten.
Kann es evtl. sein, dass er Probleme mit dem "ü" hat?
Registriert seit: 07.03.2018
Version(en): 2010
am "ü" kann es nicht liegen, ich habe nun testweise ein anderes wort benutzt, ohne erfolg.
hat excel / Vba ein problem damit, dass ich in einem code 4x einen abgleich machen möchte?
Registriert seit: 05.09.2019
Version(en): Office 365
Hallo
Es kann ja immer nur ein Wert in der Zwischenablage der verglichen werden.
Also musst du zwischen 1, 2, 3, 4 was neuer in die ZA kopieren.
Du schriebst mal, dass du das über sendkeys machst.
Ich kenne jetzt nicht den Ablauf deines gesamten Makros. Aber mMn müßte es so laufen.
ungeprüft:
Code:
Sub dgdgdg()
Dim oTest As DataObject
Set oTest = New DataObject
'sendkey1....
oTest.GetFromClipboard
If oTest.GetText(1) = "Rot" Then
'Machwas
Else
MsgBox "Kein Treffer für Rot"
Exit Sub
End If
'sendkey2....
oTest.GetFromClipboard
If oTest.GetText(1) = "Gelb" Then
'Machwas
Else
MsgBox "Kein Treffer für Gelb"
Exit Sub
End If
'sendkey3....
oTest.GetFromClipboard
If oTest.GetText(1) = "Über" Then
'Machwas
Else
MsgBox "Kein Treffer für Über"
Exit Sub
End If
'sendkey4....
oTest.GetFromClipboard
If oTest.GetText(1) = "Unter" Then
'Machwas
Else
MsgBox "Kein Treffer für Unter"
Exit Sub
End If
End Sub
LG UweD