Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нужна помощь в создании скрипта для преобразования в PDF / 7 сообщений из 7, страница 1 из 1
19.02.2014, 20:45
    #38566781
Davulcu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
Всем доброго времени суток!

Уважаемые знатоки, смею предположить, что решение моей задачи крайне простое, однако ввиду моего постыдного незнания VBS я здесь и пишу. Суть проблемы: необходимо открыть таблицу Excel, преобразовать в PDF и сохранить в указанном месте, с заменой существующего документа (при наличии). Сперва я пробовал идти путем поиска скрипта, который напрямую из Excel сохранит документ в PDF, но не смог найти необходимо скрипта, да и по неизвестной мне причине, сохранение необходимого документа даже вручную в формате PDF невозможно, в списке форматов банально нет расширения PDF..., вновь создаваемые документы сохранить в PDF можно. После я нашел скрипт и батник для PDFCreator, но тоже натолкнулся на ряд проблем. Описание ниже:

Существует скрипт, который запускается батником. В батнике указаны:

C:\Convert2PDF.vbs "<Путь к документу, который преобразуем в PDF>" "<Путь, куда сохраняем PDF файл>" "<Имя сохраняемого PDF файла>"

Скрипт открывает PDFCreator, в нем преобразует Excel таблицу в PDF документ и сохраняет по пути и с именем, указанным в батнике. Скрипт писал не я. Но автору большое спасибо. Если б владел языком, сам подправил скрипт, но вынужден просить помощи знатоков. Суть проблемы в том, что при открытии таблицы в ней надстройка Excel, производит проверку данных, ее отключить нельзя, получаем ситуацию, что после отработки скрипта у нас скрипт закрывает Excel, но тот висит с предложением сохранить внесенные изменения. Их сохранять не нужно.
Задача: необходимо скорректировать скрипт так, чтобы он закрывал после преобразования в PDF приложение Excel без сохранения изменений, а после ключу реестра присваивал значение DWORD 1. Ключ нужен для обработки его внешним приложением. Описание ключа ниже, как собтвенно и скрипт.

[HKEY_CURRENT_USER\Software\PDFCreator]
"ConvertSuccess"=dword:00000000

Заранее спасибо!

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
Set PDFCreator = Wscript.CreateObject("PDFCreator.clsPDFCreator", "PDFCreator_")
With PDFCreator
 ReadyState = 0
 .cStart "/NoProcessingAtStartup"
 .cOption("UseAutosave") = 1
 .cOption("UseAutosaveDirectory") = 1
 .cOption("AutosaveFormat") = 0
 .cOption("AutosaveStartStandardProgram") = 0
 DefaultPrinter = .cDefaultprinter
 .cDefaultprinter = "PDFCreator"
 .cClearcache
 .cPrinterStop = false
 .cOption("AutosaveDirectory") = WScript.Arguments(1)
 .cOption("AutosaveFilename") = WScript.Arguments(2) 
 .cPrintfile cStr(WScript.Arguments(0))
  c = 0
  Do While (ReadyState = 0) and (c < 120)
   c = c + 1
   Wscript.Sleep 250
  Loop
 .cDefaultprinter = DefaultPrinter
 .cClearcache
 WScript.Sleep 200
 .cClose
End With

Public Sub PDFCreator_eReady()
 ReadyState = 1
End Sub



P.S. Если у кого есть VBS скрипт, который может и напрямую из Excel преобразовывать в PDF, то буду очень благодарен за помощь. Запись ключа в реестр важна, но все таки вторична, главное - это закрыть окно без сохранения.
...
Рейтинг: 0 / 0
20.02.2014, 17:50
    #38567905
Davulcu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
Решил пойти следующим путем, с помощью батника, описанного выше, передавать в скрипт 3 параметра:
какой файл Excel открываем;

где сохраняем PDF;

с каким именем PDF сохраняем.
А скрипт напрямую из Excel сохраняет активный лист документа согласно параметрам в батнике. После преобразования Excel закрывается без сохранения изменения.

Ниже привожу скрипт, который нашел на просторах интернета, попробовал подправить, но похоже сломал, помогите починить его и приспособить для моих нужд.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim objArgs, FSO, sFileName, objExcel, objWorkbook
Set objExcel = CreateObject("Excel.Application")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
For I = 0 to objArgs.Count - 1
Set objWorkbook = objExcel.Workbooks.Open(objArgs(I))	
objWorkbook.ActiveSheet.ExportAsFixedFormat EXCEL_PDF, PathOfPDF(objArgs(I)), EXCEL_QualityStandard, TRUE, FALSE, , , FALSE
objWorkbook.Close FALSE
objExcel.Quit
End Sub
...
Рейтинг: 0 / 0
21.02.2014, 09:18
    #38568366
WebSharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
DavulcuНиже привожу скрипт, который нашел на просторах интернета, попробовал подправить, но похоже сломал, помогите починить его и приспособить для моих нужд.


Скрипт приведен не полностью - не вижу определения констант, например.

вот тут больше похоже на правду
...
Рейтинг: 0 / 0
21.02.2014, 09:54
    #38568410
Davulcu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
WebSharper,

Я его видел, в нем скрипт лопатит все, что лежит в папке, я понял так. А мне нужно передавать в него три параметра и обрабатывать один файл за раз. В этом то и проблема
...
Рейтинг: 0 / 0
21.02.2014, 11:04
    #38568528
WebSharper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
DavulcuWebSharper,

Я его видел, в нем скрипт лопатит все, что лежит в папке, я понял так. А мне нужно передавать в него три параметра и обрабатывать один файл за раз. В этом то и проблема

Примерно так: параметры - путь к файлу excel и путь к файлу pdf

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set xlObj = CreateObject("Excel.Application")
'Set fso = CreateObject("Scripting.FileSystemObject")
'Set f = fso.GetFolder("M:\Macros and Stuff for GL\New Folder")
'For Each file In f.Files
Set objArgs = WScript.Arguments
file = objArgs.item(1)
fileToSave = objArgs.item(2)
set xlWB = xlObj.Workbooks.Open(file)
'thisFileName =Left(xlWB.FullName , InStrRev(xlWB.FullName , ".") - 1)
xlWB.Sheets.Select
xlWB.ActiveSheet.ExportAsFixedFormat 0, fileToSave , 0, 1, 0,,,0
xlWB.close False
'counter = counter + 1
'WScript.Echo "File " & counter & " of " & f.Files.count & " Done"
'Next
xlObj.quit
...
Рейтинг: 0 / 0
21.02.2014, 11:53
    #38568598
Davulcu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
WebSharper,

Спасибо за помощь! Но пока не заработало. Батник содержит следующий текст:

C:\VBS3.vbs "C:\112.xlsx" "C:\112.pdf"

Выдает ошибку: Индекс выходит за пределы допустимого диапазона. Код: 800A0009
...
Рейтинг: 0 / 0
21.02.2014, 12:46
    #38568683
Davulcu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в создании скрипта для преобразования в PDF
WebSharper,

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Dim xlObj, objArgs, xlWB
Set xlObj = CreateObject("Excel.Application")
Set objArgs = WScript.Arguments
file = objArgs.item(0)
fileToSave = objArgs.item(1)
set xlWB = xlObj.Workbooks.Open(file)
xlWB.ActiveSheet.ExportAsFixedFormat 0, fileToSave , 0, 1, 0,,,0
xlWB.close False
xlObj.quit



Подправил, работает, спасибо большое! Тема закрыта!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нужна помощь в создании скрипта для преобразования в PDF / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]