Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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

Terminal Emulator get Value - Brauche mal Hilfe

Terminal Emulator get Value - Brauche mal Hilfe
02.11.2017 16:09:36
TiloT
Moin zusammen,
ich habe eine Frage bzgl. der Übertragung von Daten aus einer bestehenden
Terminal Sitzung.
Ich nutze das Programm Quick3270 und kann relativ einfach mit u.g. Code
einen Datensatz in die Sitzung eintragen, enter fertig.
Wie kann ich jetzt aber einen Wert der im Terminal in einem Feld angezeigt wird wieder zurückspielen nach zB A2 ?
Geht das per Application.MoveCursor 1, 2 und wenn ja wie?
Habt Ihr vielleicht eine Idee?
Sub testHost()
Dim ACell As Long
ACell = Range("A1").Value
AppActivate "Sitzung A - Sitzung.ecf", True
SendKeys ACell, True
SendKeys "{ENTER}", True
End Sub
Dank und Gruß
Tilo

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Terminal Emulator get Value - Brauche mal Hilfe
02.11.2017 16:48:15
onur
Wenn der Wert immer an der gleichen Stelle ist, kannst du mit Sendkeys den Cursor dahinbringen, den Text (oder Wert) markieren und mit "Str+C" kopieren und in Excel einfügen.
wie bringe ich den Cursor denn dahin ?
02.11.2017 17:04:19
TiloT
Hi,
mal angenommen ich muss den Cursor auf 4/57 und 18 Zeichen lang bis 4/75 bringen
(so stehts hier im Terminal wenn ich mit den Pfeiltasten einfach nach links tappe, ausgehend vom Anfang der übertragenen Nummer 4/18)
Wie muss ich das anstellen?
Danke mal für weiteren Input
Gruß
Tilo
...nach recht, nicht links...sorry verschrieben...
02.11.2017 17:05:19
TiloT
.
AW: ...nach recht, nicht links...sorry verschrieben...
02.11.2017 17:44:09
onur
https://msdn.microsoft.com/de-de/VBA/Language-Reference-VBA/articles/sendkeys-statement
Hier hast du noch mal alle SteuerCodes aufgelistet.
Anzeige
AW: wie bringe ich den Cursor denn dahin ?
02.11.2017 17:30:03
onur
Am Besten in die Obere linke Ecke schicken und von da aus in die Zeilen runter,usw.
Hier ein Beispiel:
https://www.herber.de/bbs/user/117393.xlsm
Problem mit MarkRight und Edit-Copy...
03.11.2017 01:34:00
TiloT
Hi Onur,
erstmal Danke für die Rückmeldung!
Hier mal mein Versuch, Tricky wirds beim Markieren und kopieren eines Bereichs im Terminal
Sub SendtoGet()
AppActivate "Microsoft Excel"
Dim ACell As Long
ACell = ActiveCell.Value
ActiveCell.Offset(1, 0).Activate
AppActivate "Sitzung A - Sitzung.ecf", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys ACell, True
SendKeys "{ENTER}", True
DoEvents
Dim x
For x = 1 To 47
SendKeys "{RIGHT}"
Next x
'Hier soll jetzt dieser Terminal-Befehl ausgeführt werden (aufgenommen mit Quick3270 Makro  _
Recorder)
'wie muss das in vba geschrieben werden denn der Terminal Syntax funktioniert so natürlich  _
nicht ?
SendKeys "größer MarkRight kleiner größer MarkRight kleiner... das ganze 10x und dann größ _
er Edit-Copy kleiner"
' anstelle SendKeys "^c", True
AppActivate ThisWorkbook.Name
ActiveCell.Offset(-1, 1).Activate
SendKeys "^v", True
SendKeys "{NUMLOCK}"
End Sub

zeigt er oben nicht an darum in text
Danke nochmal
MfG
Anzeige
AW: Problem mit MarkRight und Edit-Copy...
03.11.2017 05:40:42
onur
Vergiss doch den Makrorecorder.
Du musst mit Sendkeys die Tastenkombination schicken, die du auf dem Terminal benutzen würdest, um einen Text zu markieren und zu kopieren.
Exakt diese, sonst nix.
Die Syntax des Makrorecorders gilt nur für den Makrorecorder, du aber gibst die Tasten sozusagen direkt ein.
AW: Problem mit MarkRight und Edit-Copy...
03.11.2017 06:09:31
onur
Wenn du aber unbedingt ein Makro ausführen willst, schickst du eben die Tastenkombination zum Terminal, die du auch auf dem Terminal benutzen würdest, um das Makro auszuführen.
Wenn du versuchst, das aufgenommene Makro in vba zu integrieren, geht das in die Hose.
Die Syntax des Makrorecorders versteht nur der Recorder, aber nicht VBA.
Wenn du mit AS400 arbeitest - meines Wissens kannst du da (wie bei Windows) mit Shift-Rechts markieren und mit Str+C kopieren, also genau wie in meinem Beispielmakro.
Anzeige
das habe ich probiert nur markiert er in AS400 nix
03.11.2017 10:43:08
TiloT
Hi Onur,
genau das habe ich getan.
Und ja es ist eine AS400
Er versteht aber nur {RIGHT}, was auch funktioniert. Er geht 47x nach Rechts aber dann passiert nichts mehr. +{RIGHT} SendKeys versteht AS400 (Quick3270) nicht, jedenfalls passiert nichts, darum dachte ich ich kann Ihm MARKRIGHT senden aber auch das geht nicht.
Hast Du noch eine andere Idee?
Danke mal und Gruß
Tilo
AW: das habe ich probiert nur markiert er in AS400 nix
03.11.2017 16:39:36
onur
Wie (mit welchen Tasten) markierst bzw. kopierst du denn normalerweise auf dem Terminal?
Kopieren klappt, aber Probleme bei Wertübernahme
06.11.2017 16:24:00
TiloT
Hallo Onur,
ich habe jetzt nochmal gebastelt und hänge wieder fest :(
Anstelle irgendwelche Cursorfahrten zu machen kopiere ich den ganzen Screen
und schreibe den für mich wichtigen Wert per Teil in eine Zelle.
Das klappt wunderbar!
Was ich nun aber gemerkt habe:
Sobald der Screen kopiert ist und nach Excel geschrieben wurde,
aktualisiert die Formel B1 wie sie soll = Check
Aber die Übernahme des Wertes aus B1 in MyAddress.Offset haut nicht hin.
Der Wert der Übernommen wird ist immer der aus dem vorherigen Screen.
Es scheint als würde die Berechnung für MyAddress hinter hängen.
Beispiel:
Aktive Zelle übertragen, AS400 aktualisiert, Screen kopiert, Ergebnis in B1 = 1234
Übertragung in MyAddress = leer - ? --- nächste
Aktive Zelle übertragen, AS400 aktualisiert, Screen kopiert, Ergebnis in B1 = 2255
Übertragung in MyAddress = 1234 - jetzt hat er den vorletzten Wert übernommen ? --- nächste
Aktive Zelle übertragen, AS400 aktualisiert, Screen kopiert, Ergebnis in B1 = 2226
Übertragung in MyAddress = 2225 - jetzt hat er den vorletzten Wert übernommen ?
usw.
Irgendwelche Ideen warum die Übertragung von B1 in MyAddress immer hinter hängt?
Sub SendtoGet_b()
AppActivate "Microsoft Excel"
Dim MyAddress As String
MyAddress = Selection.Address
Dim ACell As Long
ACell = ActiveCell.Value
AppActivate "Sitzung A - Sitzung.ecf", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys "{TAB}", True
SendKeys ACell, True
Call iwait
SendKeys "{ENTER}", True
SendKeys "^a"
SendKeys "^c"
AppActivate ThisWorkbook.Name
Range("C1").Activate
SendKeys "^v"
Application.EnableEvents = False
Range("B1").Value = "=TRIM(MID(R[4]C[1],65,9))"
Calculate
SendKeys "{NUMLOCK}"
With ActiveSheet
With Range(MyAddress)
.Offset(0, 1).Value = Range("B1").Value
End With
End With
End Sub

Anzeige
AW: Kopieren klappt, aber Probleme bei Wertübernahme
06.11.2017 17:17:14
onur
Was genau ist denn MyAddress (wofür brauchst du das)?
Erledigt! des Rätsels Lösung = Clipboard
07.11.2017 15:01:38
TiloT
Hi Onur,
ich hole mir die Daten jetzt übers Clipboard zurück
SendKeys "^c"
Dim objDataObject As DataObject
Set objDataObject = New DataObject
objDataObject.GetFromClipboard
Range(MyAddress).Offset(0, 1).Value = objDataObject.GetText
Set objDataObject = Nothing
Warum Sendkeys "^v" nicht den gewünschten Effekt erzielt kann ich nicht ermitteln,
Fakt ist , jedenfalls bei mir, funktioniert es nur per Clipboard!?
Nunja, Fall gelöst und Danke für Deine Unterstützung.
mfg
Tilo
AW: Erledigt! des Rätsels Lösung = Clipboard
07.11.2017 17:42:43
onur
Sendkeys "^v" kann ja auch nix bewirken, du willst ja in Excel einfügen und nicht auf dem Terminal.
Man hätte nehmen müssen:
Range(MyAddress).Offset(0, 1).Select
ActiveSheet.Paste (Da schon im Clipboard).
Anzeige
Danke für Deine Hilfe! Alles Gute. BG - owT
08.11.2017 10:53:22
TiloT
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige