Страницы: 1
RSS
Сохранить в PDF на vbs
 
Написал небольшой макрос сохранения файла в pdf формате
Код
Sub r()
Dim PathX, PDFname
On Error Resume Next
PathX = ActiveWorkbook.Path
SetXXX = CreateObject("Scripting.FileSystemObject")
PDFname = XXX.GetBaseName(ActiveWorkbook.Name)
ChDir PathX
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PDFname, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Затем решил прибегнуть к приему, который на форуме мне показывали ранее, перевести код на vbs и добавить скрипт в меню правой кнопки мыши, получилось так
Код
Dim XL
Set XL = GetObject(, "Excel.Application" )
XL.ActiveSheet.ExportAsFixedFormat 0, , 0, True, False,,,True

Данный скрипт отрабатывает, но только при открытом файле, т.е. я запускаю файл, который нужно пересохранить и потом перетаскиваю его на иконку скрипта и он срабатывает.

Как модифицировать код, чтобы скрипт воспринимал группу файлов, без открытия последних? и можно ли средствами vbs пересохранять в pdf - картинки?

пробовал так, но у данного объекта нет таких свойств
Код
With CreateObject("Scripting.FileSystemObject")
    For Each X In wscript.arguments
      .ExportAsFixedFormat 0, , 0, True, False,,,True
    Next
  End With
 
Цитата
Дмитрий_DimAs написал: я запускаю файл, который нужно пересохранить и потом перетаскиваю его на иконку скрипта и он срабатывает
Доброе утро,
Непонятна конечная цель, так как в первом сообщении было как раз об активной книге, т.е. открытой в Excel.
Если тот код не годится, то лучше  сформулируйте задачу не кодом, а словами - что ожидается от VBS.
Про меню правой кнопки мне тоже непонятно, дайте ссылку на тему или, чтобы не запутаться, лучше обсуждать только VBS.
В Excel есть 'Сохранить как PDF', зачем тогда VBS?
Сам VBS не может сохранять в PDF,  но может вызывать приложение, которое это сделает.
Например, VBS сам может создать объект (CreateObject) Excel, загрузить в него нужную книгу, сохранить как PDF и закрыть Excel.
Изменено: ZVI - 24.10.2019 08:43:04
 
Если так принципиален обработчик через VBS то при DAD на ярлыке скрипта имена файлов поступают в конвейнер конвейер аргументов, который обрабатывается программно и каждый файл обрабатывается в цикле по Вашему сценарию. Но открыть файлы придется, даже если это будет в фоновом режиме.
Изменено: БМВ - 24.10.2019 12:28:45
По вопросам из тем форума, личку не читаю.
 
Не тестировал, но что-то типа такого должно работать, насколько я понял проблему:
Код
Call CreatePdf
Sub CreatePdf()
  Dim Excel, arg, FileName, i
  On Error Resume Next
  Set Excel = CreateObject("Excel.Application")
  If Err Then
    MsgBox "Excel is not created"
    Exit Sub
  End If
  On Error GoTo 0
  'Excel.Visible = True
  For Each arg In WScript.Arguments
    With Excel.Workbooks.Open(arg, False, True)
      FileName = Excel.ActiveWorkbook.FullName
      i = InStrRev(FileName, ".")
      If i > 1 Then FileName = Left(FileName, i - 1)
      Excel.ActiveSheet.ExportAsFixedFormat 0, FileName, 0, True, False, , , False
      .Close False
    End With
  Next
  Excel.Quit
  Set Excel = Nothing
End Sub
Изменено: ZVI - 24.10.2019 09:16:35
 
Описываю словами: задача пересохранять  в формат PDF файлы Excel, Word, .png, .jpg! Чтобы не заходить в каждое приложение отдельно, планировал скрипт загрузить в меню правой кнопки мыши(ранее уже так делал на другом скрипте), выделяешь N-ое количество файлов в папке, правой кнопкой мыши и активируешь скрипт.
БМВ, чем это делать не принципиально, если есть другие универсальные инструменты, киньте ссылку, я начал с того с чем хоть как-то знаком, с vba.
Цитата
БМВ написал:
Но открыть файлы придется, даже если это будет в фоновом режиме.
да, так конечно же и нужно, чтобы не маячило перед глазами.
 
ZVI,  Владимир, вот и я также по привычке вместо просто процедуру в тело скрипт, в подпрограмму всегда запихиваю, а потом вызываю :-)
Единственное ,что наверно стоит для глянца добавить, это проверить перед открытием тип файлов и их наличие, дабы сюрпризов не было.
По вопросам из тем форума, личку не читаю.
 
ZVI, Владимир, спасибо, отлично работает. Есть ли инструменты, способные конвертировать файлы типа .png, .jpg, и ещё забыл про .dwg и .dxf(автокадовские)?
 
Цитата
Дмитрий_DimAs написал: конвертировать файлы типа .png, .jpg, и ещё забыл про .dwg и .dxf(автокадовские)
Такими вопросами не интересовался. Наверное, всё кроме dwg, можно загружать в Word/Excel и конвертировать аналогично.
А вот больше одного вопроса в теме здесь запрещено задавать  ;)
 
Цитата
БМВ написал: ...для глянца...
Доброе утро, Михаил. Наверное, надо, но это же "рыба" :)
Мне сейчас даже проверить не на чем - из VBS ни GetObject, ни CreateObject почему-то не запускаются, требуют повышения
Изменено: ZVI - 24.10.2019 10:11:50
 
Цитата
ZVI написал:
требуют повышения
зарплаты?  :D .
Добрый день. Странно. Дома проверю, может опять что с обновлениями прилетело., только в системе, а не как Тут

Дмитрий_DimAs, для работы c другими файлами должно быть приложение, которое может работать через COM или ключи командной строки, которые позволят обработать файлы, ну и в коде придется ветвить на основании расширения файлов, кому кормить их для дальнейшей обработки.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
конвейнер
Неологизм: контейнер конвейерного типа ))
 
Цитата
Юрий М написал:
типа ))
типа такой кот внимательный, аж жуть . Спс. исправил.
По вопросам из тем форума, личку не читаю.
 
Да, я зануда! ))
 
Цитата
Юрий М написал:
Да, я зануда! ))
ну помнится сам признал что в этом я могу составить достойную конкуренцию.
По вопросам из тем форума, личку не читаю.
 
Целый клуб можем создать!
Владимир
 
Миш, так я же не утверждаю, что я САМЫЙ зануда )
 
Цитата
ZVI написал:
из VBS ни GetObject, ни CreateObject почему-то не запускаются, требуют повышения
Владимир, проверил на Win10 10.0.18362.418 - все ок. Что-то конкретно с Вашим. Попробуйте под другим, при этом с правами пользователя, аккаунта запустить.
По вопросам из тем форума, личку не читаю.
 
И у меня работает как часы: Win 10 Pro 1809 17763.805
Владимир
 
Михаил и Владимир, спасибо, что поверили!
Но моем компьютере проблема из-за того, что сначала был установлен 64-битный Offiсe 2016 64bit, а затем Office 2010 32bit, что-то в реестре некорректно теперь.
Изменено: ZVI - 25.10.2019 04:19:38
 
Off
ZVI,  Владимир, это не должно затрагивать системные объекты, тем более, что не сами объекты не работают, а нарушены права доступа.  
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх