2016-05-23 9 views
2

Я пытаюсь сохранить электронную таблицу Excel 2016 как файл PDF. У меня следующий простой Applescript, что называется изнутри Цель программы C:Applescript Excel 2016 сохранить как PDF

on saveExcelAsPDF(documentPath, PDFPath) 
tell application "Microsoft Excel" 
    open file documentPath 
    save active sheet in PDFPath as PDF file format 
    close active workbook saving no 
    quit 
end tell 
end saveExcelAsPDF 

Этот сценарий отлично работает с помощью Excel 2008 и 2011 годах, но терпит неудачу с помощью Excel 2016 (версия 15.22). Обе команды open и save работают по-разному. Может кто-нибудь, пожалуйста, помогите мне! Я потратил часы, пытаясь заставить это работать. Я прочитал все посты на эту тему, которые я могу найти. Я даже пытался использовать «Системные события», чтобы имитировать нажатия клавиш. Ничего, что я пробовал, работает. Любые советы будут высоко оценены. Благодаря!!

+0

Что такое 'documentPath' и как вы называете сценарий из ObjC? – vadian

+0

@vadian Оба документаPath и PDFPath являются строками в формате HFS. – user1092808

+0

По крайней мере, попробуйте удалить 'файл' в открытой строке или попробуйте' open (documentPath как псевдоним) ' – vadian

ответ

2

Вот сценарий для Excel 2016 (версия 15.22).

Я добавил комментарии в подлиннике:

on saveExcelAsPDF(documentPath, PDFPath) -- params = two HFS paths 
    set tFile to (POSIX path of documentPath) as POSIX file -- get a posix file object to avoid grant access issue with 'Microsoft Office 2016', not the same as (file documentPath) when using the 'open ...' command 

    tell application "Microsoft Excel" 
     set isRun to running 
     set wkbk1 to open workbook workbook file name tFile 
     alias PDFPath -- This is necessary to any script for 'Microsoft Office 2016', this avoid errors with any "save ... " command 
     save workbook as wkbk1 filename PDFPath file format PDF file format with overwrite 
     close wkbk1 saving no 
     if not isRun then quit 
    end tell 
end saveExcelAsPDF 
+0

WOW !!! Это отлично работает! Большое вам спасибо. Как вы когда-нибудь это выяснили?!? !, Еще раз спасибо! – user1092808

+0

As мои собственные скрипты не работают во всех случаях, разрешают проблему доступа, чтобы открыть файл, который не входит в список последних документов, выдавать какую-либо команду «save ...», когда конечным пунктом является новый файл, или пункт назначения находится в еще одна папка. Мне нужно было найти решение, поэтому я протестировал простой скрипт и модифицировал его до тех пор, пока он не будет работать без ошибок. – jackjr300

Смежные вопросы