2014-11-10 4 views
0

Мне нужно преобразовать сотни чертежей visio в PDF. Я могу щелкнуть их правой кнопкой мыши и нажать на печать, но я получаю окно для подтверждения для каждого документа, который мне нужно распечатать. Я думал об использовании следующего кода для печати всех документов в папке на моем принтере по умолчанию (PDF), однако это также требует подтверждения. Кто-нибудь знает, как изменить код, поэтому мне не нужно каждый раз проверять вручную?Подтверждение печати обхода Visio с использованием VBScript

set shApp = CreateObject("shell.application") 
currentPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") 
set shFolder = shApp.NameSpace(currentPath) 
set files = shFolder.Items() 
for each files in files 

if files.name <> Wscript.ScriptName then 
    'msgbox("printing "&files.name) 
    files.InvokeVerbEx ("Print") 
end if 
next 

ответ

1

Вы можете использовать Visio непосредственно, и сделать "Сохранить как PDF" программно:

set shApp = CreateObject("shell.application") 

Set visioApp = CreateObject("Visio.InvisibleApp") ' start invisible Visio app 

currentPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") 
set shFolder = shApp.NameSpace(currentPath) 
set files = shFolder.Items() 
for each files in files 

if files.name <> Wscript.ScriptName then 
    ' msgbox("printing "&files.name) 
    ' files.InvokeVerbEx ("Print") 

    set doc = visioApp.Documents.OpenEx(files.path, 1+2+128+256) ' name, readonly + copy + macro disabled + no workspace 
    doc.ExportAsFixedFormat 1, files.path & ".pdf", 1, 0 ' pdf, filename, printer quality, print all 
    doc.Close 

end if 
next 

visioApp.Quit 

Подробнее о ExportAsFixedFormat в msdn

+0

спасибо за это, но, к сожалению, я не смог использовать этот метод в качестве моей компании использует Visio 2002 и оно не поддержите его. Из того, что вы мне дали, хотя мне удалось распечатать из приложения на мой PDF-принтер по умолчанию, который отлично работает и не просит меня подтвердить. Также любите невидимое приложение, чтобы оно не отображалось: set doc = visioapp.documents.open (files.path) doc.Print. Спасибо – ToniHopkins

+0

Также вы знаете какой-либо способ изменить имя файла при его печати в PDF, поскольку в настоящее время каждый раз, когда я печатаю в PDF из Visio, файл появляется в каталоге как Visio-filename.pdf У меня есть отдельный скрипт, который обрабатывает все файлы удалив это, но было бы неплохо, если бы он просто был создан с помощью только имени файла.pdf с самого начала? – ToniHopkins

+0

Я предполагаю, что это имя файла по умолчанию. (то есть напечатанный файл имеет имя после исходного файла). Может быть, он может быть настроен каким-то образом в настройках «pdf-принтер», не уверен. Кроме этого нет идеи, кроме того, что вы уже озвучили - просто пост-обрабатывайте файлы со сценарием :) – Nikolay

0

Для тех, кто использует Visio 2007 или более поздней версии, то ответ Николая является лучшее решение. Однако если, как я ваши использовать что-нибудь ниже 2007, то следующие файлы будут петли и распечатывать каждый без запроса подтверждения:

set shApp = CreateObject("shell.application") 
Set visioApp = CreateObject("Visio.InvisibleApp") ' start invisible Visio app 

currentPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".") 
set shFolder = shApp.NameSpace(currentPath) 
set files = shFolder.Items() 
for each files in files 

    if files.name <> Wscript.ScriptName then 

set doc = visioapp.documents.open(files.path) 
doc.Printer = "\\bprintpdf1\PDF4Printing" 
doc.Print 
     doc.Close 

    end if 
next 

visioApp.Quit 
Смежные вопросы