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

Уважаемые знатоки, смею предположить, что решение моей задачи крайне простое, однако ввиду моего постыдного незнания 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
Нужна помощь в создании скрипта для преобразования в PDF
    #38567905
Davulcu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил пойти следующим путем, с помощью батника, описанного выше, передавать в скрипт 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
Нужна помощь в создании скрипта для преобразования в PDF
    #38568366
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DavulcuНиже привожу скрипт, который нашел на просторах интернета, попробовал подправить, но похоже сломал, помогите починить его и приспособить для моих нужд.


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

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

Я его видел, в нем скрипт лопатит все, что лежит в папке, я понял так. А мне нужно передавать в него три параметра и обрабатывать один файл за раз. В этом то и проблема
...
Рейтинг: 0 / 0
Нужна помощь в создании скрипта для преобразования в PDF
    #38568528
WebSharper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Нужна помощь в создании скрипта для преобразования в PDF
    #38568598
Davulcu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
WebSharper,

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

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

Выдает ошибку: Индекс выходит за пределы допустимого диапазона. Код: 800A0009
...
Рейтинг: 0 / 0
Нужна помощь в создании скрипта для преобразования в PDF
    #38568683
Davulcu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
7 сообщений из 7, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Нужна помощь в создании скрипта для преобразования в PDF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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