Ja, ich hab eine Ahnung davon. Mir passiert nämlich auch dauernd was ganz blödes.
Nein, einen Paste- oder Copy-Befehl gibt es natürlich nicht. Wenn du dich mit VBA und SAP GUI Scripting auseinandersetzen willst, ist die Lösung relativ einfach.
Eine Quick and Dirty-Lösung wäre es, wenn du den Code-Schnipsel nach Word kopierst, über den Serienbrief-Assistenten mit der Excel-Tabelle verknüpfst und im Befehl
session.findById("wnd[0]/usr/ctxt").Text = "525445"
den String
"525445"
inkl. der Anführungszeichen ersetzt durch dein Excel-Feld.
Der Serienbriefassisten bastelt dir dann den gesamten Code-Schnipsel sooft hintereinander, wie Excel-Zeilen vorhanden sind. Diesen Code kannst du dann in deinen ursprünglichen VBA-Code rein kopieren und das Programm dann starten. Aber vorsicht, damit kann man auch viel falsch machen. Also erstmal mit nur wenigen Excel-Zeilen und auf einem Testsystem testen.
Deutlich einfacher geht das - wie von zalto schon erwähnt - mit 3rd-party-Lösungen wie SimDia² von ERSAsoft.
In SAP gibt es dafür unterschiedliche (meistens aber schwierige) Methoden, um Massendaten einzuspielen. Eine universell einsetzbare und einfach zu bedienende Zusatz-Software ist SimDia² von ERSAsoft
http://www.ersasoft.de/simdia.html?s=gf
Auch einen Versuch wert:
https://youtube.com/watch?v=lPuivPj7KmU
von Pete Moxon
Starte die PC7 und melde dich dort an. Dann drückst du Alt+F12 und wählst die Option "Verknüpfung erstellen...". Damit erzeugst du eine Verknüpfung direkt auf dem Desktop.
Du kannst übrigens vor der ganzen Aktion schon eine bestimmte Transaktion starten und erst dann die Verknüpfung anlegen. Dann öffnet sich diese direkt nach einem Doppelklick auf die Desktop-Verknüpfung.
Vielleicht solltest du deine Frage besser in einem speziellen SAP-Forum stellen. Dort treiben sich die ganzen Cracks herum.
Nimm z.B.
http://www.dv-treff.de/yaf_forum2_Technische-Foren.aspx oder
Versuch es mal mit
ActiveSheet.PageSetup.FitToPagesWide = 1
ActiveSheet.PageSetup.FitToPagesTall = 1
Die einfache Formel lautet:
=RUNDEN($A2*3%+MIN(MAX(0;$A2-40000);10000)*1,5%+MAX(0;$A2-50000)*1%;2)
Und so funktioniert sie:
$A2*3% sollte klar sein
MIN(MAX(0;$A2-40000);10000)*1,5%
1. Schritt: der höhere Betrag von 0 und Umsatz-40000 --> negativen Wert vermeiden
2. Schritt: der kleinere Betrag aus 10000 und obigem Wert --> Umsatz > 50000 vermeiden
MAX(0;$A2-50000)*1%
der höhere Betrag von 0 und Umsatz-50000 --> negativen Wert vermeiden
Und das Ganze aus 2 Stellen gerundet und ohne Wenn Und Aber
Du kannst das natürlich schon machen, den Status in die Spalte A legen. Ob das aber sinnvoll und anwenderfreundlich ist??? Wo soll denn der Anwender nun mit seinen Eingaben anfangen? In Spalte C? Woher weiss er denn das?
Ich löse so etwas folgendemaßen:
Spalte A enthält z.B. das Eingabedatum (das kann man nämlich leicht mit "Strg+." einfügen). B2 enthält die Formel
=wenn(A2<>"";"offen";"")
Die Formel kopierst du mit der Maus bis ans Ende deiner Tabelle.
Weiterhin gibst du deiner Standardwert-Liste einen Namen. Anschließend legst auf die Zellen B2 bis B9999 über Daten - Datenüberprüfung eine Liste mit der Quelle "=name deiner liste" fest.
Jedesmal, wenn nun in Spalte A ein Datum (oder etwas anderes) eingegeben wird, erfolgt in Spalte B die Vorbelegung "offen". Ändern lässt sich der Wert dann nur mit einem Wert deiner Standardwert-Liste.
Hier kannst du dir die Trial-Version zur lokalen Installation downloaden:
https://store.sap.com/sap/cpa/ui/resources/store/html/SolutionDetails.html?pid=0000000218&pcntry=US&sap-language=EN&\_cp\_id=id-1428996298188-0
Aber Achtung: die Installation hat es in sich. Sie ist genau so kompliziert wie SAP selbst. Unter YouTube findest du aber ausführliche Anleitungen.
Hallo Jana,
ich denke, das wird nicht gehen. Was mich aber wundert, ist die Tatsache, dass du deine Formeln wöchentlich anpassen musst. Vielleicht sollten wir uns die einmal anschauen?
Und wenn du, statt die Zeilen auszublenden, einen Autofilter benutzen würdest?
Columns("H:H").AutoFilter
ActiveSheet.Range("$H:$H").AutoFilter Field:=1, Criteria1:="<>0", _
Warum gebt ihr euch eigentlich solche Mühe mit einer Antwort, wenn der Ersteller sich nicht einmal die geringste Mühe bei der Formulierung seiner Frage gibt? Das schaut ja schon fast aus wie ein Troll.
Zeig uns deine Daten...
Wenn ich die Frage richtig verstehe, geht es dir nur darum, im Ausdruck den gesamten Bereich auf einem Blatt sehen zu können:
- Auszudruckende Spalten markieren - Seitenlayout-Druckbereich festlegen
- Seite einrichten-Papierformat-Skalierung anpassen 1 Seite breit
Nicht genau wie von dir beschrieben, aber ähnlich kannst du es mit der bedingten Formatierung erreichen. Leg einfach zwei Regeln mit folgenden Formeln an:
- =UND(ODER(A2=A3;A2=A1);A2<>"")
- =UND(A2<>A1;A2=A3)
Der ersten Regel gibst du als Format eine Hintergrundfarbe, der 2. einen oberen Rahmen.
Beide Regeln werden angewendet auf =$A:$A.
http://www.teialehrbuch.de/
Das geht auch sehr viel einfacher: Überprüfen - Änderungen nachverfolgen - Änderungen während der Eingabe protokollieren.
Dann siehst du nicht nur, welche Zelle geändert wurde, sondern auch wann und von wem. Und wenn du willst, kriegst du auch noch einen Änderungverlauf protokolliert.
Schau mal hier... http://www.gutefrage.net/frage/excel-beim-oeffnen-einer-datei-vorhandene-verknuepfungen-anzeigen-lassen
Schreibe einfach deine Klassen (K0, K1...) mit den Wert-Bereichen (0, 10000, 20000 ...) z.B. in die Spalten K und L.
Mit der Formel
SVERWEIS(B1;$K$1:$L$5;2;1)
erhältst du die entsprechende Klasse. Es ist in diesem Fall wichtig, dass der Wertbereich in Spalte K aufsteigend sortiert ist.