Ich möchte in einer bereits bestehende Excel Datei nach einer Zeichenkette suchen und dann in der jeweiligen Zeile eine Zelle kopieren und später in einem anderen Programm wieder einfügen. In dieser Excel Datei sind über 4000 Sachen mit entsprechenden Daten zu jeder Sache in der entsprechenden Zeile.
Run G:\xxxxx\2019.xls
sleep 1000
Send ^f
sleep 1000
Send Gs%az%
sleep 500
send {enter}
sleep 1000
Send {Esc}
sleep 1000
Send {right}{right}{right}Ste{right}%Datum%{right}
;hier muss eine Zelle kopiert werden (und später in einem anderen word dok an einer bestimmten Stelle einfügen)
Click 52, 15
sleep 500
WinClose 2019.xls
Ich bin noch am Anfang von ahk und lerne gerne neues dazu. Ich hoffe ihr könnt mir helfen.
Mir wurde schon gesagt, dass VB evtl. praktischer wäre als ahk, aber ich muss auch in MS fremde Programme damit.
Run G:\xxxxx\2019.xls ; öffnet die Excel-Datei
sleep 1000 ; wartet eine Sekunde
Send ^f ; öffnet das Suchen-Fenster
sleep 1000 ; wartet eine Sekunde
Send Gs%az% ; gibt Gs%az% in das Suchfeld ein
sleep 500 ; wartet eine halbe
send {enter} ; enter
sleep 1000 ;warten
Send {Esc} ; schließt das fenster
sleep 1000 ; warten
Send {right}{right}{right}Ste{right}%Datum%{right} ; springt drei zellen nach rechts, gibt "ste" ein, springt noch eine nach rechts, gibt das Datum ein, springt noch eine nach rechts
; hier muss eine Zelle kopiert werden (und später in einem anderen word dok an einer bestimmten Stelle einfügen)
Click 52, 15 ; klickt irgendwohin(Wohin genau)
sleep 500 ; wartet wieder
WinClose 2019.xls ; schließt excel
Maglo wrote:Der click klickt auf das speichern Symbol oben in der taskleiste.
würde ich mit send, ^s machen. ist ein bisschen sicherer, falls sich das Fenster mal verschiebt oder so (Excel macht ja manchmal komische sachen).
in deinem Beispiel kannst du ja dann mit send, ^c die Zelle kopieren. Der Inhalt ist dann in der Variable Clipboard gespeichert und kann weiter verarbeitet werden.
ok danke, meine Zwischenfrage hatte sich auch erledigt.
Weiteres Problem, was hier allerdings nicht auftaucht. (will nicht unbedingt für sowas kleines ein neuen Theard aufmachen)
Ich will eine Word-Datei öffnen, bearbeiten, 3x drucken und schließen ohne das gespeichert wird. Mit Strg + w kann man das schließen, aber nicht ohne dem Bestätigungsfenster. Mein Problem hierbei ist nur das problemlose nicht-speichern und schließen.
Idee?
... ach ja: das COM-Objekt eignet sich natürlich auch für die Arbeit mit Word (Word öffnen, schließen, drucken). Dazu müsstest du aber etwas genauer werden, was du mit "Bearbeiten" meinst: manuell oder auch programmgesteuert?
Dort stehen ein paar Befehle unter Excel bzw. Word, aber ich finde keine Liste wo alle Befehle stehen. Z. B. wo finde ich wie man eine bestimmte Excel Datei öffnet?
LuckyJoe wrote:... ach ja: das COM-Objekt eignet sich natürlich auch für die Arbeit mit Word (Word öffnen, schließen, drucken). Dazu müsstest du aber etwas genauer werden, was du mit "Bearbeiten" meinst: manuell oder auch programmgesteuert?
Excel-Datei öffnen: Excel.Workbooks.Open("D:\Test.xlsm").
COM ist hier sehr gut erklärt, oder auch hier.
Wenn du in Word mit "Ansprungmarken" arbeitest, kannst du dann nicht auch mit Feldern arbeiten und die Serienbrieffunktion nutzen? Damit kannst du doch Excel als Quelle benutzen.
Maglo wrote:
Ich will eine Word-Datei öffnen, bearbeiten, 3x drucken und schließen ohne das gespeichert wird. Mit Strg + w bzw. besser Alt+F4 kann man das schließen, aber nicht ohne dem Bestätigungsfenster. Mein Problem hierbei ist nur das problemlose nicht-speichern und schließen.
Idee?
Wow danke, hat mir echt krass weitergeholfen. Da kann ich eben alles überarbeiten, aber macht ja Spaß.
Kannst du mir noch obige Frage beantworten?
Eine Word-Datei schließt du ohne zu speichern mit oWord.ActiveDocument.Close(0).
Möchtest du sie unter einem bestimmten Namen speichern: oWord.ActiveDocument.SaveAs("d:\xxx\MeinWordDokument.doc")
Word beenden: oWord.Quit()
Zum mehrmaligen Ausdrucken musst du bestimmte Parameter in einer bestimmten Reihenfolge "überspringen": oWord.ActiveDocument.PrintOut( , , , , , , , Copies := 3)
Damit sprichst du Excel und die Zellen direkt an, ohne Gefahr zu laufen, dass irgendein Meldungsfenster dir in deine Tasten-Aufrufe haut.
Viele Erfolg - Lucky Joe
Hi Lucky Joe, sehr interessant, habe gleich damit was experimentiert. hast du einen tip, wie ich mit COM-Objekt ein Foto in die excel datei schreiben kann?, bsp. in die zelle A11
hab nun einiges probiert und bin mit meinem Skript fast fertig, allerdings fehlen noch ein paar Sachen:
Kurz was das Skript genau machen soll:
Also das komplette Skript soll zuerst ein bestimmtes Dokument öffnen und an das Ende einen Vermerk schreiben, dieses Dok 3x ausdrucken, speichern, schließen und verschieben
Dann ein bestimmtes Excel Register öffnen, nach einem Begriff suchen und in der Zeile neben dem gefundenen Suchbegriff dann bestimmte Daten eintragen und einen Wert kopieren, speichern und schließen.
Dann 2 weitere verschiedene Dok Formulare öffnen und dort in die Textmarken entsprechende Daten einfügen, die vorher in einer Maske angegeben wurden, diese beiden Formulare ausdrucken, nicht speichern und schließen.
Die Dokumente müssen nicht geöffnet werden (also sichtbar im Bildschirm) Wenn ich am Ende alles ausgedruckt in der Hand halte ist es perfekt.
Das Excel Register funktioniert nicht. Wenn er das Register öffnet und den Suchbegriff findet, dann soll er in den Zellen daneben die Wörter einsetzen und einmal kopieren. Er schreibt die Sachen allerdings in die 2. Zeile und nicht neben dem gefundenen Suchbegriff.
Bei den Bookmarks fügt er keine Variabeln ein. "%az%" wird als %az% wiedergegeben.
Ansonsten funktioniert alles.
Ich hab gestern 5 Stunden das alles versucht zu verstehen und zusammenzuschreiben, aber hab es nicht ganz geschafft.
bitte schicke mir Musterdateien (ohne persönliche/geschäftliche/behördliche) Daten sowohl von der Excel-Datei als auch von den Word-Dateien. Ansonsten muss ich das hier alles mühsam nachbauen und habe möglicherweise immer noch nicht das, was du haben willst. Dann probiere ich mich gerne noch einmal daran.
Bei den Variablen tippe ich mal darauf, dass du die entweder nicht in "Anführungszeichen" setzen darfst oder die Anführungszeichen "nachbilden" (Chr(34)) musst. Bilde zum Testen von "kombinierten" Variablen am besten eine neue Variable, die du dann verwendest.
danke dir
das funktioniert toll, das foto ist jedoch nicht an eine bestimmte zelle gebunden, geht das auch? evt. sogar mit der möglichkeit die zelle anzuklicken und dann das foto im original zu öffnen?
Hi effel,
(sorry an den Rest der Community, wenn es off-topic wird)
soweit ich weiß, sind Grafiken grundsätzlich Objekte, die nicht "Inhalt" einer Zelle, wohl aber an diese "gebunden" werden können. Dazu die Zelle selbst so groß machen, dass die Grafik hineinpasst (Zeilenhöhe/Spaltenbreite), dann die Grafik (mit Alt-Maus) in die obere linke Ecke der Zelle positionieren. Rechtsklick auf die Grafik - Grafik formatieren - Eigenschaften: von Zellposition und -größe abhängig" anklicken.
Das Öffnen der Grafik bekommst du hin, wenn du in der Zelle einen Hyperlink zu der Grafik in deinem Dateiverzeichnis legst.
Das alles entfernt sich aber etwas von AHK, denn ich würde für Excel-/Word-Programmierung immer noch VBA innerhalb dieser Produkte vorziehen.
Entschuldige, daß ich diesen Thread wieder aufgreife, aber er liegt doch zu nahe an einer kleinen Frage, die sich direkt darauf bezieht, als daß ich einen neuen Thread eröffnen wollte.
Du schreibst nämlich unten einen Code, wie man in ein Word-Dokument an vorgegebenen Bookmarks Text einfügen kann.
Ich habe jetzt eine Vorlage mit Word erstellt und formatiert und darin sollten nur noch zwei spezifische Werte bzw. Texte eingegeben werden. Dazu habe ich entsprechend Textfelder gesetzt und in Schrift, Farbe, Größe und Position festgelegt. Wie steuere ich diese an, damit die - über Inputbox oder Gui - eingegebenen - Angaben dann wie vorgesehen dort hineingesetzt werden?
Also wohlbemerkt: Es soll kein neues Word-Dokument erstellt werden, sondern es existiert eine Vorlage, die erhalten bleiben bleiben muß!
Du schreibst auch:
COM ist hier sehr gut erklärt, oder auch hier.
mit Verweisen auf das alte Forum.
Gibt's das auch irgendwo auf Deutsch?
vorab zum Sprachgebrauch: "Textfelder" sind nicht das gleiche wie "Textmarken". Textmarken (engl. bookmark) fügst du mit "Einfügen - Textmarke - Textmarkenname" da ein, wo du deinen Cursor positioniert hast (z.B. "MyBookmark1"). Um das in Word zu sehen, schaltest du unter "Datei - Optionen - Anzeige - Optionen für die Seitenanzeige - Textmarkerzeichen anzeigen" ein (ist bei mir Office 365, bei Office 2003 liegt das woanders).