• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Frühling ist auch in den eingesandten Fotos deutlich zu erkennen. Zeigt uns, wer Euer Favorit ist! hier geht es lang für Euer Voting --> Klick

Applescript in Word:Mac 2008. Problem mit Bildern (inline shape)

SilentCry

deaktivierter Benutzer
Registriert
03.01.08
Beiträge
3.831
Hallo.
Ich arbeite mich gerade frisch in Applescript ein, anhand eines echten Problems:
Wir fügen in Worddokumente oft Grafiken ein. Diese als "Inhalt einfügen" -> "Bild". (Da sie oft aus Quellen kommen wie z.B. PowerPoint oder irgendein verquertes DrawingObject sind/waren.)

Nun funktioniert aber die Einstellung "in line with text" im Word nur für CMD-V (also nicht "Inhalt einfügen" sondern nur "einfügen", was es nicht immer als Bild macht. Daher war die Idee ein Applescript zu schreiben, das das kann, nämlich ein selektiertes Bild in ein "in line with text" shape zu wandeln.

Was geht ist das:
tell application "Microsoft Word"
activate active document
repeat with s in (get shapes in active document)
if shape type of s is shape type picture then
convert to inline shape s
end if
end repeat
if shape type of s is shape type picture then
convert to inline shape s
end if
end tell

Das aber wandelt ALLE Bilder im Dokument so um.

Die Idee war nun, dass NUR DAS SELEKTIERTE Bild umzuwandeln ist aber das geht nicht.
Folgendes Testprogramm wirf immer aus "Was sonst?" obwohl ein Bild aktiviert ist.

tell application "Microsoft Word"
activate active document
set s to selection
if shape type of s is shape type picture then
display dialog "BILD!"
else
display dialog "Was sonst?"
end if
end tell

Wie spricht man selektierte Bilder an? Ich finde nichts. Geht das nicht?
Danke!
 

SilentCry

deaktivierter Benutzer
Registriert
03.01.08
Beiträge
3.831
*push* Keine Applesciptprofis mit Worderfahrung willens mich zu erleuchten? *sniff* && *flauschig schau*
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Also das würde dir schonmal zurückgeben, ob ein shape ausgewählt ist:

Code:
tell application "Microsoft Word"        
    if selection type of selection is selection shape then
        display dialog "shape selected"
    else
        display dialog "no"
    end if
end tell
Um das selectierte shape in ein inline shape umwandeln, müsstest du aber jetzt das shape Object bekommen. Das hab ich jetzt auf Anhieb nicht herausgefunden, wie das aus der selection funktionieren soll..
 

SilentCry

deaktivierter Benutzer
Registriert
03.01.08
Beiträge
3.831
Danke. Ja, "shape selected" kommt raus.
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Sag mal, bist du sicher, dass es keine Einstellungssache ist?

Du meinst doch so einfügen, oder?
0314_2010-05-06_0313.jpg

Bei mir werden die so Inline eingefügt.

Meine Einstellung:
1424_2010-05-06_1424.png
pencil.png
 

SilentCry

deaktivierter Benutzer
Registriert
03.01.08
Beiträge
3.831
So klappt das schon, das weiß ich. Habe ich in meinem Initialposting geschrieben, mit CMD-V geht es ;)

Aber wir bekommen Bilder nicht immer so richtig geliefert. Kopier mal ein Bild in die Zwischenablage.
Dann mach Bearbeiten -> Inhalte einfügen... und wähle "Bild".
Schwupps steht es links. "Inhalte einfügen..." nämlich ignoriert die "in line with text"-Einstellung (die ich so habe wie du).
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Ah... jetzt hab ich's verstanden.
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Eine mögliche Lösung:

Code:
tell application "Microsoft Word"
    set mySelST to selection start of selection
    log "mySelST:" & mySelST
    
    set myShapes to every shape of active document
    
    repeat with aShape in myShapes
        select aShape
        set aShapeST to selection start of selection
        log "aShapeST:" & aShapeST
        log (shape type of aShape is shape type picture) and (mySelST is equal to aShapeST)
        --(*
        if (shape type of aShape is shape type picture) and (mySelST is equal to aShapeST) then
            convert to inline shape aShape
            exit repeat
        end if
        --*)
    end repeat
    
end tell
Sehr unschön, da erstmal durch alle vorhandenen shapes geloopt wird und diese auch ausgewählt werden. Eigentlich Schwachsinn.

Aber es tut, was du möchtest.


Wenn's mich wieder juckt, guck ich nochmal, ob ich einen anderen Weg finde. Vielleicht findest du ja auch in der Zwischenzeit eine andere Lösung...


-----
EDIT:
Du kannst natürlich auch schon vor select aShape prüfen, ob das shape shape type picture hat. Dann würde es zumindest nur die Bilder selektieren... zumindest falls noch mehr shapes vorhanden sind und nicht nur Bilder...
Trotzdem unschön.


----EDIT2:
Nein, noch besser: Gar nicht erst shapes mitnehmen, die nicht shape type picture haben.
Code:
 tell application "Microsoft Word"
    set mySelST to selection start of selection
    log "mySelST:" & mySelST
    
    set myShapes to every shape of active document whose shape type is shape type picture
    
    repeat with aShape in myShapes
        select aShape
        set aShapeST to selection start of selection
        log "aShapeST:" & aShapeST
        log (mySelST is equal to aShapeST)
        --(*
        if (mySelST is equal to aShapeST) then
            convert to inline shape aShape
            exit repeat
        end if
        --*)
    end repeat
    
end tell
 
Zuletzt bearbeitet:

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Word 2010 kann ja jetzt VBA.
Hast es? Hast es mit VBA versucht? Klappt das?

Lass es mich wissen, falls du es ausprobieren solltest. :)
 

SilentCry

deaktivierter Benutzer
Registriert
03.01.08
Beiträge
3.831
Ich habe grade eben zuhause Office:Mac 2011 installiert und das speziell noch nicht probiert vornehmlich da ich für die Firma in absehbarer Zeit wohl keines kaufen werde (das Office:2008 läuft gut und vor allem muss ich in der Firma das teuere Enterprise kaufen weil die Home&Student ja nicht kommerziell eingesetzt werden darf - und da ich mir das selbst leisten muss...)

Für zuhause ist der Druck nicht so heftig :.) aber wenn ich es mal ausprobiert habe melde ich mich.

OT:
Im Moment aber kämpfe ich ein Wenig mit meinem neuen MBP 15" - ich habe 2x4GB RAM eingebaut heute, gleich danach kein Problem. Nach dem Mittagessen startete es mal nicht (piep, piep, piep, PIEEEEP, PIEEEEP, PIEEEEP, piep, piep, piep - da friert einem das Blut und der Atem stockt - ich HASSE Hardware-Issues, wenn es denn eines ist) und meinte dann unmittelbar nach dem Login ich soll neu starten, jetzt habe ich PRAM reset gemacht, das ging, jetzt läuft er, ich lief auch, zum Händler für TechTool Pro und sobald ich ihn unbenutzt lassen kann gibt es einen umfassenden RAM-Test.