Excel mit AHK

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Excel mit AHK

Re: Excel mit AHK

Post by LuckyJoe » 15 Aug 2019, 01:56

Hi,

du kannst auch in ein Textfeld eine Textmarke einfügen. Ist denn dein Problem mit dem Setzen der Textmarke jetzt gelöst? Sonst schick doch mal eine Beispieldatei.

HG - Lucky Joe

Re: Excel mit AHK

Post by Meister Lampe » 15 Aug 2019, 01:38

Hallo LuckyJoe!
vorab zum Sprachgebrauch: "Textfelder" sind nicht das gleiche wie "Textmarken".
Eben genau deswegen habe ich ja gefragt. Ich habe, um meine Word-Vorlage besser strukturieren zu können, absichtlich Textfelder verwendet. Im Prinzip handelt es sich wohl um dasselbe, wie wenn ich einen Geschäftsbrief mit schön gestyltem Briefkopf habe, in den nur noch die Adresse hereingesetzt werden soll. Für die würde man auch bevorzugt so ein Textfeld verwenden.
Ich habe versucht, hier im Forum unter Stichwörtern wie "Briefvorlage", "Formular" o.ä. zu suchen, aber nichts gefunden.

Viele Grüße von Meister Lampe

Re: Excel mit AHK

Post by LuckyJoe » 14 Aug 2019, 17:06

Hallo Meister Lampe,

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).

In AHK kannst du die Textmarke dann ersetzen mit:

Code: Select all

DocumentPath := "C:\MyDocument.docx"   ; example
BookmarkName := "MyBookmark1"   ; example

oWord := ComObjCreate("Word.Application")
oDoc := oWord.Documents.Open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc.Bookmarks(BookmarkName).Select
oDoc.Bookmarks(BookmarkName).Range.Text := "Hier wurde MyBookmark1 ersetzt."
Viel Erfolg.
HG - Lucky Joe

Re: Excel mit AHK

Post by Meister Lampe » 14 Aug 2019, 16:49

Hallo LuckyJoe!

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?

Viele Grüße von Meister Lampe

Re: Excel mit AHK

Post by LuckyJoe » 25 Apr 2018, 10:21

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.

Viel Erfolg - Lucky Joe

Re: Excel mit AHK

Post by effel » 25 Apr 2018, 09:40

LuckyJoe wrote:probiere es hiermit:

Code: Select all

Excel := ComObjActive("Excel.Application")		; aktuell laufende Excel Instanz
Excel.ActiveSheet.Pictures.Insert("d:\xxx\MeinFoto.jpg").select   ; ←------ anpassen!
...
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?

Re: Excel mit AHK

Post by LuckyJoe » 25 Apr 2018, 08:29

Hi Maglo,

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.

VG - Lucky Joe

Re: Excel mit AHK

Post by Maglo » 25 Apr 2018, 07:39

Hey,

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.

Mein Entwurf:
Spoiler
Probleme:

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.

Ich küsse dir die Füße Joe.

Re: Excel mit AHK

Post by LuckyJoe » 25 Apr 2018, 04:30

Hallo effel,

probiere es hiermit:

Code: Select all

Excel := ComObjActive("Excel.Application")		; aktuell laufende Excel Instanz
Excel.ActiveSheet.Pictures.Insert("d:\xxx\MeinFoto.jpg").select   ; ←------ anpassen!
Excel.Selection.ShapeRange.Left := 10
Excel.Selection.ShapeRange.Top := 10
;Excel.Selection.ShapeRange.Height := 100
Viel Erfolg - Lucky Joe

Re: Excel mit AHK

Post by effel » 25 Apr 2018, 03:29

LuckyJoe wrote:Hallo Maglo,

ich würde mit COM-Objekt arbeiten:

Code: Select all

Excel     := ComObjActive("Excel.Application")		; aktuell laufende Excel Instanz
WorkBook  := Excel.ActiveWorkbook					; aktuell geöffnete Datei
Sheet     := Excel.ActiveSheet						; aktuell geöffnete Tabelle

Suchbegriff:= "Test"
FormatTime, Heute, A_now, dd.MM.yyyy
Adresse := Excel.Range("A:A").Find(Suchbegriff).address
	If Adresse
	{
		clipboard =
		Excel.Range(Adresse).offset(0,3).value := "ste"
		Excel.Range(Adresse).offset(0,4).value := Heute
		Excel.Range(Adresse).offset(0,5).copy
		ExcelZellKopie := Clipboard
		Excel.CutCopyMode := False
	}
	Else
		MsgBox, Suchbegriff nicht gefunden.

MsgBox, % ExcelZellKopie
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

Re: Excel mit AHK

Post by LuckyJoe » 25 Apr 2018, 02:50

... so, zu den letzten Fragen:

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)

Viel Erfolg - Lucky Joe

Re: Excel mit AHK

Post by LuckyJoe » 24 Apr 2018, 11:02

Hi Maglo, habe heute Abend leider keine Zeit mehr - vielleicht morgen, wenn du nicht alleine weiterkommst.
VG - Lucky Joe

Re: Excel mit AHK

Post by Maglo » 24 Apr 2018, 09:59

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?

und:

Code: Select all

oword.ActiveDocument.PrintOut.Copies:=3
Ich will das Dokument 3x ausdrucken. Wo ist mein Fehler?

Re: Excel mit AHK

Post by LuckyJoe » 24 Apr 2018, 09:07

Hi,

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.

Ansonsten als Anregung zu Word (ungetestet):

Code: Select all

DocumentPath := "C:\MyDocument.docx"   ; example
BookmarkName := "MyBookmark"   ; example

oWord := ComObjCreate("Word.Application")
oDoc := oWord.Documents.Open(DocumentPath)
oWord.Visible := 1, oWord.Activate
oDoc.Bookmarks(BookmarkName).Select
oDoc..Bookmarks(BookmarkName).Range.Text := "Abc123"
Viel Erfolg - Lucky Joe

Re: Excel mit AHK

Post by Maglo » 24 Apr 2018, 08:03

Ich verstehe die com-objekte nicht ganz. https://autohotkey.com/board/topic/5698 ... ntry381256

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?

Lucky Joe

programmgesteuert. Hier ein Bsp:
Spoiler
Mit F11 komm ich in Word zu den Ansprungmarken, die vordefiniert im Formular sind.

Und danke für den Code :) Ich fühl mich so dumm.

Re: Excel mit AHK

Post by LuckyJoe » 24 Apr 2018, 06:48

... 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?

Lucky Joe

Re: Excel mit AHK

Post by LuckyJoe » 24 Apr 2018, 06:42

Hallo Maglo,

ich würde mit COM-Objekt arbeiten:

Code: Select all

Excel     := ComObjActive("Excel.Application")		; aktuell laufende Excel Instanz
WorkBook  := Excel.ActiveWorkbook					; aktuell geöffnete Datei
Sheet     := Excel.ActiveSheet						; aktuell geöffnete Tabelle

Suchbegriff:= "Test"
FormatTime, Heute, A_now, dd.MM.yyyy
Adresse := Excel.Range("A:A").Find(Suchbegriff).address
	If Adresse
	{
		clipboard =
		Excel.Range(Adresse).offset(0,3).value := "ste"
		Excel.Range(Adresse).offset(0,4).value := Heute
		Excel.Range(Adresse).offset(0,5).copy
		ExcelZellKopie := Clipboard
		Excel.CutCopyMode := False
	}
	Else
		MsgBox, Suchbegriff nicht gefunden.

MsgBox, % ExcelZellKopie
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

Re: Excel mit AHK

Post by Maglo » 24 Apr 2018, 04:56

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?

Re: Excel mit AHK

Post by Folllast » 24 Apr 2018, 03:51

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.

Re: Excel mit AHK

Post by Maglo » 24 Apr 2018, 03:47

Genau alles richtig

Der click klickt auf das speichern Symbol oben in der schnellleiste

Danke schon einmal

Top