Hallo Steve85,
anscheinend bist Du meinem Link gefolgt. Da ich aber auf die TA ME01 keinen Zugriff habe, kann ich auf das von Dir aufgezeichnete Skript nicht näher eingehen.
Soviel sei aber gesagt:
1. Das VB-Skript könnte auch so aussehen:
for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row
for j = 1 to xclapp.ActiveCell.SpecialCells(11).Column
if j=1 then PAR1 = xclsht.Cells(i,j).Value
if j=2 then PAR2 = xclsht.Cells(i,j).Value
if j=3 then PAR3 = xclsht.Cells(i,j).Value
next
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/ctxtEINA-LIFNR").text = PAR1
session.findById("wnd[0]/usr/ctxtEINA-MATNR").text = PAR2
session.findById("wnd[0]/usr/ctxtEINE-WERKS").setFocus
session.findById("wnd[0]/usr/ctxtEINE-WERKS").caretPosition = 4
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/txtEINE-APLFZ").text = PAR3
session.findById("wnd[0]/usr/txtEINE-APLFZ").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/tbar[0]/btn[11]").press
next
msgbox "All " & cstr(xclapp.ActiveCell.SpecialCells(11).Row - 1) & " Excel rows have been processed."
Set xclwbk = Nothing
Set xclsht = Nothing
xclapp.Quit
set xclapp = Nothing
D.h., dass die sog. "Platzhalter" besser als Variablen/ Parameter verstanden werden sollten.
Um zu erkennen, warum Du diese Variablen in Deine "Bezeichnungen" nicht ändern kannst, müsste man zuerst das konkrete Bsp. von Dir sehen.
2.
if j=1 then PAR1 = xclsht.Cells(i,j).Value
Diese Programmzeile bedeutet, dass aus einer Excel-Mappe, die zuvor geöffnet wurde, aus einem Blatt (xclsht), aus einer Zelle mit der Zeile = i und Spalte = j ein Wert in die Variable PAR1 übertragen wird. Die Bedingung j=1 sichert ab, dass der Parameter aus der 1. Spalte im Excel abgegriffen wird.
Die Excel-Mappe könnte dabei z.B. so aussehen:
A B C D
1 PAR1 PAR2 PAR3
2 1234 23 10,00
3 1235 24 11,00
4
3.
for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row
Der o.g. Befehl weist an, die Schleife solange fortzusetzen, bis das absolute Zeilenende von Excel erkannt wird. Es ist nicht mit einer ersten leeren Zeile zu verwechseln. Wenn nach den mit Daten gefüllten Zeilen und Spalten einige Zeilen folgen, die leer sind, aber nicht gleichzeitig als absolutes Ende gelten, dann kann es schon zu der beschriebenen Erscheinung kommen.
Lösung:
Entweder man löscht alle "leeren Zeilen" und speichert die Excel-Mappe erneut (mit STRG / Ende jeder Zeit überprüfbar)
oder man baut zusätzliche Befehle in die Schleifen ein:
z.B.
for i = 2 to xclapp.ActiveCell.SpecialCells(11).Row
if xclsht.Cells(i,j).Value = 0 then Exit for
for j = 1 to xclapp.ActiveCell.SpecialCells(11).Column
if xclsht.Cells(i,j).Value = 0 then Exit for
. . .
Meine Frage:
Wo bleiben in dem aufgezeichneten Skript die o.g. Variablen wie
"Valid from" , "Valid to" , "Vendor Nummer" und "ein Häckchen"?
Grüße,
ScriptMan
Bearbeitet vom Benutzer
vor 9 Jahre
|
Grund: Nicht angegeben