Cette tâche est très simple avec AppleScript dans Excel depuis Office 2011.
(Je ne peux pas confirmer actuellement qu'il fonctionne avec Office 2016).
----------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2017/11/28 15:34
# dMod: 2017/11/28 15:39
# Appl: Microsoft Excel
# Task: Get the front document's container folder path & its full path.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Microsoft_Excel, @Front, @Document, @Container, @Folder, @Path, @Full, @Path
# Test: Tested only in Excel 14.7.1 (of Office 2011) on macOS 10.12.6
----------------------------------------------------------------
tell application "Microsoft Excel"
tell front document
set docContainerPathHFS to path
set docFullPath to full name
end tell
end tell
set the clipboard to docFullPath
----------------------------------------------------------------
Vous pouvez obtenir le chemin d'accès au dossier contenant le document ou son chemin d'accès complet.
Voici une autre technique utilisant l'UI-Scripting qui fonctionne avec la plupart des applications même si elles ne sont PAS scriptables. (J'ai ajouté la gestion des erreurs à celle-ci).
----------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2017/11/28 15:25
# dMod: 2017/11/28 15:30
# Appl: Microsoft Excel, System Events
# Task: Copy path of frontmost Excel document to the Clipboard.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @ASObjC, @Microsoft_Excel, @System_Events, @Copy, @Path, @Frontmost, @Excel, @Document, @Clipboard
# Test: Tested only in Excel 14.7.1 (of Office 2011) on macOS 10.12.6
----------------------------------------------------------------
use AppleScript version "2.4" -- Yosemite and later
use framework "Foundation"
use scripting additions
try
tell application "System Events"
tell application process "Microsoft Excel"
tell (first window whose subrole is "AXStandardWindow")
set fileURL to value of attribute "AXDocument"
end tell
end tell
end tell
set posixPathOfFrontExcelDocument to (current application's class "NSURL"'s URLWithString:fileURL)'s |path|() as text
set the clipboard to posixPathOfFrontExcelDocument
on error e number n
set e to e & return & return & "Num: " & n
if n != -128 then
try
tell application (path to frontmost application as text) to set ddButton to button returned of ¬
(display dialog e with title "ERROR!" buttons {"Copy Error Message", "Cancel", "OK"} ¬
default button "OK" giving up after 30)
if ddButton = "Copy Error Message" then set the clipboard to e
end try
end if
end try
----------------------------------------------------------------
Excel (2011) dispose de son propre menu script, ce qui facilite l'utilisation d'AppleScripts.
On me dit que les produits Office 2016 n'ont plus de menus script.
Personnellement, j'utilise les deux FastScripts et Maestro du clavier pour surmonter ces limitations. Je limite la plupart de mes AppleScripts à FastScripts et j'utilise Keyboard Maestro pour de nombreuses autres tâches d'automatisation.
-ccs