Скрипт для создания шаблона Excel

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

TIGROIDONIA
Сообщения: 8
Зарегистрирован: Пт авг 19, 2011 09:40

Сообщение TIGROIDONIA »

Друзья, снова прошу о помощи, всвязи с усовершенствованием файла шаблона и включением в него макросов теперь мне требуется все тоже самое, но с сохранением шаблона с поддержкой макросов, те с расширением xlsm, как я понимаю процедура SaveAs должна иметь какой-то другой вид?
В настоящий момент пользуюсь этим кодом успешно, прошу подправить для использования файлов с макросами для Excel 2010

Код: Выделить всё

'Создает пустой xlsx-файл в текущем каталоге и открывает его 
File    = InputBox("Введите имя нового файла (без расширения)", "Создание нового xlsx-файла", "Новый файл") 
If File = "" Then WScript.Quit 
If WScript.Arguments.Count > 0 Then Template = WScript.Arguments(0) Else Template = "" 
With CreateObject("Excel.Application") 
  .Workbooks.Add Template 
  .Application.ActiveWorkBook.SaveAs CreateObject("WScript.Shell").CurrentDirectory & "\" & File & ".xlsx" 
  .Visible = True 
End With
[/quote]

Добавлено спустя 48 минут:

Эх, не выдержал и нашел решение сам, если кому надо, то добавить параметр 52

Код: Выделить всё

.Application.ActiveWorkBook.SaveAs CreateObject("WScript.Shell").CurrentDirectory & "\" & File & ".xlsm", 52
Nick
Сообщения: 107
Зарегистрирован: Пт дек 26, 2014 17:11

Сообщение Nick »

При попытке запуска этого скрипта получаю:
---------------------------
Строка: 7
Символ: 4
Ошибка: Метод SaveAs из класса Workbook завершен неверно
Код: 800A03EC
Источник: Microsoft Excel
---------------------------
Возможно ли еще как-то адаптировать этот скрипт, чтобы создавать документы и Word тоже. (Office XP). Сейчас приходится делать так: ПКМ на панели TC-->Новый-->документ Microsoft Word-->ввод имени и после этого запуск файла. С Excel аналогично. Достаточно неудобно.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Выше предлагалось удалить ", 51". Не помогло?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Nick
Сообщения: 107
Зарегистрирован: Пт дек 26, 2014 17:11

Сообщение Nick »

Flasher писал(а):Выше предлагалось удалить ", 51". Не помогло?
После этого файл Excel создается только в папке, где находится сам скрипт. Параметр %P не работает. А как быть с Word?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Код: Выделить всё

' ==========================================================================
' Создать пустой doc(x)/ppt(x)/xls(x)-файл в активном каталоге и открыть его
' Условие:  путь запуска должен быть пустым
' Параметр: <расширение файла>

' Автор: Flasher ©
' ==========================================================================
Ext = WScript.Arguments(0) : Extx = Left(Ext, 3)
Title = "Создание нового " & Ext & "-файла"
Select Case Extx
  Case "doc" Pr = "Word" : Case "xls" Pr = "Excel" : Case "ppt" Pr = "PowerPoint"
  Case Else MsgBox Ext & " - неверное расширение!", 48, "   " & Title : WScript.Quit
End Select : FN = Trim(InputBox(String(5, vbCr) & "Введите базовое имя файла:",_
Space(23) & Title, "Новый файл")) : If FN = "" Then WScript.Quit
F = CreateObject("WScript.Shell").CurrentDirectory & "\" & FN : FN = F
While CreateObject("Scripting.FileSystemObject").FileExists(_
FN & "." & Ext) i = i + 1 : FN = F & " (" & i & ")" : Wend
With CreateObject(Pr & ".Application")
  Select Case Extx
    Case "doc" Set Add = .Documents.Add : Case "ppt" Set Add = .Presentations.Add
  Case Else .Workbooks.Add : Set Add = .Application.ActiveWorkBook
  End Select : Add.SaveAs(FN & "." & Ext) : .Visible = True
End With
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Nick
Сообщения: 107
Зарегистрирован: Пт дек 26, 2014 17:11

Сообщение Nick »

Flasher
Ok. Работает, но только создаваемые файлы отличаются. Например, файл doc, созданный через TC=10,5 KB, через скрипт=19,5 KB. Файлы xls создаются с одинаковым размером, но разным содержимым.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Nick
Ничем не могу помочь. ТС ничего подобного не умеет. Использование системного контекстного меню к этому не относится.
У меня, как я ранее писал, файлы docx системной создаются и открываются пустыми (0 байт). xlsx скриптом - 7760 байт, через меню десктопа - 6339 байт.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Почему просто не сделать шаблоны и не копировать в нужное место с нужным именем? MS Office и LibreOffice хранят свои шаблоны в ShellNew, кажется.
Просто положить рядом со скритом и не париться, что стоит и какой версии.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off
Шаблоны? Речь же про пустышки. Их, естественно, как копии тоже можно задействовать, так будет, конечно, проще.

Код: Выделить всё

TOTALCMD#BAR#DATA
cmd /c copy "%COMMANDER_PATH%\Scripts\Шаблоны\Template.doc" NewFile.doc && NewFile.doc

imageres.dll,188
Создать и открыть doc-файл

1

Но как ранее обсуждалось, поведение для 0-байтовых Word-файлов не во всех случаях одинаковое. Поэтому я бы доверился ActiveX.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Flasher
Смущают различия, да и Pr & ".Application" есть не везде.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Skif_off писал(а):Смущают различия
Это мелкомягкие виноваты, а не я. Изображение
Skif_off писал(а):да и Pr & ".Application" есть не везде
Там, где стоят программы MS Office, - везде. Изображение
Я, конечно, могу задействовать объектную модель LibreOffice, если та отсутствует, но оно кому надо? Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Люди, а между прочим, размеры xlsx-файлов, созданных через десктоп>ПКМ>Создать и TC>заголовок панели>ПКМ>Новый тоже отличаются. Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Nick
Сообщения: 107
Зарегистрирован: Пт дек 26, 2014 17:11

Сообщение Nick »

Flasher писал(а):могу задействовать объектную модель LibreOffice, если та отсутствует, но оно кому надо?
Такой скрипт для LibreOffice тоже не помешал бы.
Flasher писал(а):размеры xlsx-файлов, созданных через десктоп>ПКМ>Создать и TC>заголовок панели>ПКМ>Новый тоже отличаются.
В проводнике и в TC меню вообще часто отличается. Да и даты TC делает неправильные, в отличие от проводника, который создает файл по текущей дате.
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Такой скрипт для LibreOffice тоже не помешал бы
А есть ещё Gnumeric, KCells (KOffice), SoftMaker Office, WPS Office (Kingsoft Office)...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Изображение ИздеваетеС?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить