Zwischenablage Formatierung speichern mit Autoit

  • Hallo Freunde der automatisierten Schritte,

    aus einer Excel Tabelle habe ich per Hand eine Zelle (oder mehr) in die Zwischenablage gelegt.
    Der Inhalt der Excel-Zelle farblich formatiert.

    Im Hintergrund soll ein Autoit-Script die Änderung der Zwischenablage überwachen und den Inhalt inklusive der Formatierungen so speichern, dass diese über Autoit auch wieder in die Zwischenablage gelegt werden können.
    (das ist die Idee – bisher noch nicht programmiert)

    Wie kann ich mit Autoit den Inhalt der Zwischenablage inklusive aller Formatierungen in einer temporären Datei speichern, um diesen später wieder in die Zwischenablage zu legen und in Excel einfügen zu können?

    Mir geht es nicht um die Verwendung von Excel.au3 (UDF). Excel nehme ich hier als Beispiel stellvertretend für formatierte Ausdrücke in der Zwischenablage.

    Viele Grüße
    AutoMit

  • Schau dir mal die _ClipBoard_-Funktionen an. Die deutsche Hilfe wurde nicht umsonst mit viel Arbeit und Mühe erstellt...
    Mir stellt sich die Frage, wieso du diese Funktionen nicht mit der Suche in der Hilfe gefunden hast!?

  • Das ist eine Funktion, die meine Verständnis übersteigt.

    Ich habe nur diese Funktion finden können, aber diese wandelt den Inhalt der Zwichenablage um.

    _ClipBoard_GetData
    Ruft die Daten aus der Zwischenablage in einem angegebenen Format ab
    _ClipBoard_GetData([$iFormat = 1])

    Dazu braucht man das $iFormat.

    Also müsste ich, bevor ich diese Funktion aufrufen kann, das Format ermitteln - nur wie?

    Das Beispielscript unter diesem Befehl liefert für eine Excel-Zelle 30 Zwischenablageformate. Was kann ich damit für mein Ziel anfangen?

    Ich möchte doch nur den Inhalt aus der Zwischenablage in dem Format speichern, in dem er in der Zwischenablage liegt - hier als Beispiel für eine farbig formatierte Excel-Zelle.

  • @BugFix

    Wie kann ich die Hilfe-Suche sinnvoll weiter einschränken.

    *clip* ergibt 85 Treffer - das hilft leider nicht.

    *clip* *get* ergibt 81 Treffer

    *clip* *get* *data* ergibt 46 Treffer


    *clip* *get* *data* *save* ergibt 9 sinnlose Treffer.


    Wie kann ich das so schreiben, dass wirklich eine Funktion unter überschaubaren Fundstellen ist, die das Auslesen des Inhalts der Zwischenablage ermöglicht.

    • Offizieller Beitrag

    *clip* ergibt 85 Treffer - das hilft leider nicht.

    Ergibt bei mir sogar 143 Treffer - und doch, es hilft enorm. Als erstes klickst du dann auf die Spaltenbezeichnung "Titel". und nun ist der ganze Kram sortiert und nur die wirklich relevanten Funktionsnamen sind vorn, so etwa 30. Die meisten beginnen mit "_ClipBoard_" und das sagt dir, dass hier eine UDF existiert mit Funktionen für das Clipboard. Und die Funktionen solltest du dir dann alle (zumindest in der Funktionsbeschreibung) erst mal durchlesen.

  • @BugFix - wo finde ich einen Download-Link zu Deiner deutschen Hilfe-Datei, die scheinbar erheblich umfangreicher als meine ist.

    Versuchen wir uns, dem Ziel zu nähern.

    Die einzige Funktion, die ich fand, ist:

    _ClipBoard_GetData
    Ruft die Daten aus der Zwischenablage in einem angegebenen Format ab

    Soll das die richtige Funktion sein? Die verstehe ich leider nicht - siehe oben.

    • Offizieller Beitrag

    Mit einer Funktion wirst du da nicht alles abdecken. Darum LIES bitte alle Funktionen der Clipboard-UDF durch! Fast jede enthält einen Bezug auf Format. Es ist jetzt an dir herauszufinden, was für dich funktioniert. Es sind genug Bsp. enthalten, an denen du die Wirkungsweise der Funktionen nachvollziehen kannst und dann weißt, was für dein Problem nützlich ist.
    Programmieren heißt auch Try & Error. Das ist ein Lernprozeß. Wenn wir dir hier eine fertige Auswahl der "Zutaten" auf den Tisch packen und das "Rezept" dazu, wird nie ein echter "Koch" aus dir. :rolleyes:

  • :) Falls doch noch einer die Lösung kennt, würde mich das freuen, nachdem ich die Funktionen - wie von Bugfix empfohlen - gelesen und keine Lösung gefunden habe.

    Einmal editiert, zuletzt von AutoMit (29. Januar 2016 um 15:06)

  • In so kurzer Zeit kannst du unmöglich alle _ClipBoard_* Funktionen durchgelesen haben und evtl. die dazugehörigen Beispiele zum Verständnis getestet. Falls doch wundert mich es nicht, daß du es in dieser kurzen Zeit nicht verstanden hast.
    Bisher unbekanntes zu erforschen benötigt leider Zeit und systematisches Vorgehen: Ich würde dir also empfehlen:

    • _ClipBoard_ChangeChain anzu sehen, ist notwendig denn bedenke auch andere Programme könnten ein funktionerenedes Clipboard benötigen.
    • heraus finden welches Format Excel benutzt (MSDN wälzen oder durch testen mit Hilfe des Beispiels zu _ClipBoard_EnumFormats
    • _ClipBoard_GetDataEx und _ClipBoard_SetDataEx Beispiele testen.

    Dies wird imho Minimum zum Verständnis benötigt. Wenn du das nicht in dieser 1 Stunde geschafft hast:

    • setzt du dich halt noch weitere Stunden hin
    • oder du wartest bis irgendjemand dir eine fertige Lösung vorsetzt
    • oder du erbittest eine Lösung im Forum Programmieranfragen mit Gegenleistung. Ich denke einen Mann-Tag dafür anzu setzen ist nicht zu hoch.
    • du suchst weiter in Foren (vor allem im Entwicklerforum) und testest gefundenes durch.

    Gehen wir davon aus du hast das o.g. Minimum verstanden, musst du diese noch implementieren. Dies kann wieder langwierig werden je nachdem welche und wieviele Formate du unterstützen willst.

  • Ich habe zu jeder Funktion der Zwischenablage die Funktion sowie die Beschreibung und Rückgabewerte gelesen - siehe oben - und aufgezeigt, wo ich nicht weiterkomme und was ich getestet habe.
    Und das über 4 Stunden!

    Es geht nicht um eine fertige Lösung - es geht um ein Gerüst - und die Frage, ob hier jemand sowas verfügbar hat.

    Ich bin davon ausgegangen, dass ich nicht der erste bin, der den Inhalt einer Zwischenablage mit Formatierung mit Autoit speichern möchte und hoffte auf ein Script als Unterstützung, in dem ich "nur" das spezifische Format von Excel einpflegen muss, falls es das noch nicht gibt.

    Wir greifen hier doch alle auf Programmbeispiele zurück. Das Forum ist voll davon. Warum nutzen wir hier UDFs und andere Funktionen? Und in vielen Antworten stecken umfangreiche Programme.

    Was ist daran falsch?

    Derzeit geht es mir nur um Excel.

    Der Zeitaufwand, so eine Funktion per Hand als Anfänger neu zu programmieren steht in keinem Verhältnis zum Nutzen.

    Ist die Frage nicht erlaubt, ob jemand sowas als Beispiel vorzuliegen hat?
    Muss denn das Rad xmal neu erfunden werden?

    Wenn es mit Autoit keine einfache Lösung gibt, formatspezifisches aus der Zwischenablage zu speichern - hey - dann sagt das doch als Experten - und dann muss eine andere Lösung her. In diesem Fall dann ohne Autoit.

    4 Mal editiert, zuletzt von AutoMit (29. Januar 2016 um 17:35)

    • Offizieller Beitrag

    Ist die Frage nicht erlaubt, ob jemand sowas als Beispiel vorzuliegen hat?
    Muss denn das Rad xmal neu erfunden werden?

    Doch, die Frage ist erlaubt und das Rad muss nicht neu erfunden werden, wenn das jemand vorher getan hat.
    Der Punkt ist eher, dass das Arbeiten mit der Zwischenablage weder häufig noch trivial ist und somit kaum jemand ein "Gerüst" rumstehen hat. Ich würde jetzt erst mal genau das tun, was ich dir empfohlen habe, ein bischen mit den Formatparametern experimentieren und schauen was geht. Es gibt nicht nur ein Format, wie du ja selbst gesehen hast. Du musst also herausfiltern, welche dieser Formate erforderlich sind, um dein Excelzelle wieder genau wie im Original darstellen zu können.

  • Vielen Dank Bugfix - ich muss das Thema vertagen.

    Was Du schreibst - habe ich vermutet - es übersteigt meine derzeitigen Fähigkeiten bei weitem, ähnlich wie das mit dem Vordergrundfenster API. Ich sehe es nach zahlreicher Lektüre wie Du. Die Zwischenablage ist alles andere als trival und alles andere als intuitiv in Autoit zu benutzen.

    Einmal editiert, zuletzt von AutoMit (29. Januar 2016 um 18:50)

  • Ich habe zu jeder Funktion der Zwischenablage die Funktion sowie die Beschreibung und Rückgabewerte gelesen - siehe oben - und aufgezeigt, wo ich nicht weiterkomme und was ich getestet habe.
    Und das über 4 Stunden!

    (14:48 - 14:03 = 0:45) < 4:00, auf welchem Planeten lebst du denn?

    Außerdem hatte bereits Office2000 eine hervorragende Zwichenablage, welche sogar noch von Freeware deutlich erweitert wurde, daß ich mich frage warum dies selber programmieren?

    Du kannst mir glauben, hätte ich unter den gegebenen Stichwörtern in meiner DB >0 Treffer gehabt, ich hätte dir hier gerne die Links dazu gepostet.

    Da dem aber leider nicht so ist sei mir der Hinweis auf deine Möglichkeiten gestattet, wobei ich die Möglichkeit das Projekt zu verwerfen noch nicht einmal aufgezählt habe.

    mfg autoBert

  • (14:48 - 14:03 = 0:45) < 4:00, auf welchem Planeten lebst du denn?

    Ich teste, bevor ich Beiträge schreibe. Ich weiß was ein String, was eine Zahl, was ein Fensterhandle ist und mehr. Und dennoch erhalte ich Anfeindungen am laufenden Band, ich kenne den Unterschied zwischen String und Zahl nicht und ich wisse nicht, dass sich ein Fensterhandle ändere, wenn Notepad erneut gestartet wird (beides heute hier im Forum erlebt),obwohl ich nur eine Frage stelle - eine Lösung erbitte - und stattdessen kommen solche Antworten.

    Können wir uns drauf einigen, wer nur beleidigen will, kann das gerne per PN tun - will ja niemanden beschränken. Aber bitte, in den Threads sollte es um zielführende Lösungen gehen.

    Außerdem hatte bereits Office2000 eine hervorragende Zwichenablage, welche sogar noch von Freeware deutlich erweitert wurde, daß ich mich frage warum dies selber programmieren?

    Warum gibt es wohl hunderte mp3 Player, Editoren usw.?

    Weil niemand sagte, Mensch, Du Blödel, wieso willst Du das programmieren, da gibt es doch schon was.

    Oder weil die User Funktionen vermissten, sie ein anderes Layout wollten, ihne eine Lösung vorschwebte, die sie bisher nicht umgesetzt fanden ...

  • Ich teste, bevor ich Beiträge schreibe. Ich weiß was ein String, was eine Zahl, was ein Fensterhandle ist und mehr. Und dennoch erhalte ich Anfeindungen am laufenden Band, ich kenne den Unterschied zwischen String und Zahl nicht und ich wisse nicht, dass sich ein Fensterhandle ändere, wenn Notepad erneut gestartet wird (beides heute hier im Forum erlebt),obwohl ich nur eine Frage stelle - eine Lösung erbitte - und stattdessen kommen solche Antworten.
    ...

    wenn du schon zitierst dann richtig und nicht durch weglassen Sinn entstellend:

    (14:48 - 14:03 = 0:45) < 4:00, auf welchem Planeten lebst du denn?

    Wer behauptet, daß er in 45 min 4 Stunden getestet hat, muß sich obige Frage gefallen lassen!
    PS.: die dazugehörigen Post's sind verlinkt.