VBA Text kopieren und vergleichen
#1
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...
Top
#2
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...
Top
#3
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.
Top
#4
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:
  • pfann
Top
#5
perfekt, vielen Dank für deine Hilfe! Sensationell
Top
#6
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?
Top
#7
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?
Top
#8
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
Top


Gehe zu:


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