2016-09-28 2 views
1

Ich bin derzeit in der Endphase der Erstellung eines Workflows für eine sehr mühsame und langwierige wöchentliche Prozess mit der Verwendung von Daten in einem Excel zum Einfügen von Bildern.Applescript - Beibehaltung der Bildabmessungen beim Einfügen von Bildern in Excel

Ich habe es geschafft, eine Kombination aus Automator und Applescript auszuarbeiten, um einen Workflow zu erreichen, der die Bilder in der Excel, an ihrem richtigen Platz bekommt, aber mit meinem aktuellen applescript kommen sie in einer eingestellten Größe, 100 x 100 Hier

ist die Frage:

ich alle Bilder müssen in einer Höhe von 100px kommen, aber ich brauche die Breite flexibel zu sein. Ich kann anscheinend nicht das letzte Stück davon herausfinden, von dem ich annehme, dass es ein Applescript-Befehl für Excel wäre, um das Seitenverhältnis zu sperren.

Hier ist der aktuelle Apple ich für den eigentlichen Bildimport bin mit:

tell application "Finder" 
    set imageFolder to "Macintosh HD:Users:adlife:Desktop:Temporary_Image_Hold - Copyright Filings" 
end tell 

tell application "Finder" 
    set imageList to files of folder imageFolder 
end tell 

tell application "Microsoft Excel" 
    set imageHeight to 100 
    set imageWidth to 100 
    set imageCount to count of imageList 
    set theRange to active cell of worksheet 1 of workbook 1 
    set thisStep to 0 
    set theLeft to left position of active cell 

repeat with imageFile in imageList 

    set theTop to (top of active cell) 

    set newPic to make new picture at beginning of worksheet 1 of workbook 1 with properties {file name:(imageFile as text), height:imageHeight, width:imageWidth, top:theTop, left position:theLeft, placement:placement move} 


    set thisStep to thisStep + 1 
end repeat 
end tell 

Ich bin mit Microsoft Excel 2011 auf El Capitan

All hier Hilfe wäre sehr geschätzt!

Danke!

+0

Also habe ich gerade einen Workaround dafür gefunden ... Vor dem Einfügen von Bildern in mein Excel, habe ich ein Apple-Skript eingerichtet, um eine Photoshop-Aktion auszuführen, die das Bild öffnet, seine Größe ändert und fügt dann den Seiten der Bilder eine einheitliche Auffüllung hinzu. Auf diese Weise haben alle JPEGs, die in das Excel eingefügt werden, die gleiche Größe - nur einige von ihnen haben Leerzeichen auf den Seiten und einige nicht, was die Excel-Daten nicht stört, also sind wir gut zu gehen! Ich wäre immer noch daran interessiert, dies nur mit Applescript zu lernen, wenn jemand von euch weiß wie! –

Antwort

0

Es gibt keine Bildeigenschaft, um das Seitenverhältnis zu erzwingen. Das Kontrollkästchen in der Benutzeroberfläche dient dazu, das Verhältnis zu sperren, wenn der Benutzer das Bild bewegt oder seine Größe ändert.

Die Lösung besteht darin, Bildabmessungen zu erhalten und das Verhältnis (Breite/Höhe) auf Ihre definierte Bildhöhe (= 100) anzuwenden. Abmessungen werden mit den Anweisungen "Image Events" bereitgestellt. Dann können Sie die neue Breite als Eigenschaft "width" im "make new picture" verwenden.

set imageFolder to "Macintosh HD:Users:adlife:Desktop:Temporary_Image_Hold - Copyright Filings"as alias 

tell application "Finder" to set imageList to files of folder imageFolder 

tell application "Microsoft Excel" 
set imageHeight to 100 
set imageWidth to 100 -- just a default value, not really needed 
set imageCount to count of imageList 
set theRange to active cell of worksheet 1 of workbook 1 
set thisStep to 0 
set theLeft to left position of active cell 

repeat with imageFile in imageList 

    set theTop to (top of active cell) 
    tell application "Image Events" -- open the image and get dimensions 
     set theFile to imageFile as alias 
     set myImage to open theFile -- don't worry, it will not open the fiel for user, only for the script ! 
     set {W, H} to dimensions of myImage 
     set imageWidth to imageHeight * W/H -- set width using the proportion of image = W/H 
    end tell 
    set newPic to make new picture at beginning of worksheet 1 of workbook 1 with properties {file name:(imageFile as text), height:imageHeight, width:imageWidth, top:theTop, left position:theLeft, placement:placement move} 

    set thisStep to thisStep + 1 
end repeat --next image to place 
end tell 

ich das Skript getestet (natürlich mit meinem eigenen Bild-Ordner!), Und es funktioniert mit El Capitain und Excel 2011.

Wie Sie sehen können, Ich habe auch die ersten Zeilen des Codes :

Um imageFolder zu setzen, müssen Sie es nicht in einem Tell "Finder" -Block tun.Allerdings muss es als "Alias" festgelegt werden.

Um alle Dateien zu erhalten, können Sie "Finder" in einer Zeile sagen, ohne Tell/End Tell Block. (einfacher)

Verwandte Themen