Страницы: 1
RSS
печать PDF Selection.PrintOut
 
сегодня весь день пурхаюсь с макросами.  
так и не получилось вывести на печать файлы с разными именами  
 
подскажите - как распечатать на Adobe PDF (акробатовском принтере) табличку со всеми возможными фильтрами в первой колонке и с автоименованием файлов?  
 
что получилось сделать: ('основной макрос (полурабочий))  
*переключение фильтра  
*печать  
 
что не получается сделать: (''нерабочие строки макроса)  
*сделать активным принтер "Adobe PDF". (из трех методов отсюда http://excelvba.ru/code/printers у меня почему то работает только второй. отслеживаю в окошке Immediate)  
*автоименование файла  
*параметры печати - там в списке чуть ниже выскакивает ошибка "нельзя установить свойство PageQuality класса PageSetup"  
 
прикрепила архив - в нем поместились только два сделанных вручную файла PDF, остальные заменила пустышками  
 
вам наверное покажется это очень простым. а я вот только начала осваивать макросы, год "сидела" на формулах. надо потихонечку переезжать на макросы
 
на дворе глубокая ночь, а я с обеда грызу макросы :)  
 
пока что получилось доделать первую часть макроса  
и добавить-таки активацию принтера Adobe PDF  
 
осталось автоименование и параметры печати
 
похоже единственный вариант автопечати и сохранения в файл, но макрос заставляет зависнуть весь Excel. помогает только завершение процесса и имя файла все равно не вписывается автоматически :(    
есть вариант лечения его?  
 
Filename = "C:\" & ActiveSheet.Range("D1").Value & ".pdf"  
SendKeys Filename & "{ENTER}", False  
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True  
newHour = Hour(Now())  
newHour = Hour(Now())    
newMinute = Minute(Now())    
newSecond = Second(Now()) + 2  
waitTime = TimeSerial(newHour, newMinute, newSecond)    
Application.Wait waitTime  
If Application.Wait(Now + TimeValue("0:00:02")) Then    
MsgBox "Time expired"    
End If
 
по такому макросу получается, что сначала принтер печатает и спрашивает имя файла, а потом макрос вписывает С:\111.pdf в последнюю выбранную ячейку  
 
неужели в Selection.PrintOut нельзя сделать автоименование?  
или эксперементировать и ставить другие PDF принтеры ?  
или выносить все на отдельный лист и делать ActiveSheet.ExportAsFixedFormat? (очень не хочется ;( )
 
Так у Вас 2007/10, раз есть возможность ExportAsFixedFormat?  
Сейчас посмотреть негде, но кажется, что в настройках была возможность при ExportAsFixedFormat выбирать только область печати.  
Если так, то я бы предпочёл сохранять в PDF, а не печатать - проще всё реализовать.
 
да, офис 2010  
 
для "Selection.PrintOut filename:=111.pdf"  
нужно играться с этими параметрами http://s017.radikal.ru/i434/1204/26/2dc0becba4e8.jpg  
играться неохота, чтобы не повлиять на печать других документов помимо Excel  
 
сейчас копаю в сторону:  
ActiveSheet.PageSetup.PrintArea + ActiveWorkbook.ExportAsFixedFormat  
или в сторону doPDF или PDFCreator  
 
уже часов 14 штудирую гугл, такая каша в голове :)
 
Попробуйте просто записать рекордером процесс сохранения в пдф области печати листа - потом поменяете код.  
Если конечно там есть такая возможность  - сохранять область печати.
 
Пусть печатает, как ему нравится, а после печати просто переименуйте файл этим-же или другим макросом.  
           Name OldName As NewName
 
Range("$E$10:$G$18").ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\1.pdf", OpenAfterPublish:=False  
 
Документ не сохранен. Возможно, документ открыт или при сохранении возникла ошибка  
 
никто не сталкивался с такой ошибкой? создает файл и пишет такую ошибку.
 
Так создаёт или нет?  
Бывает, что в корень с не разрешает писать система - поменяйте путь.
 
создает, и выдает ошибку после этого  
 
в общем я уже разобралась - это Касперский. отключила его - создались все 4 файла.
 
насчет Касперского: оказывается нужно отключить проактивную защиту либо добавить Excel в доверенные:  
http://s019.radikal.ru/i620/1204/41/0a8a5115bec2.jpg  
http://s019.radikal.ru/i627/1204/44/999d33b38e5c.jpg
 
таки сделала печать таблицы с фильтром  
'Thanks to http://www.planetaexcel.ru  
'Thanks to http://excelvba.ru/code/printers  
 
только вот вопрос меня не покидает - а если в эту таблицу вставить новый столбик посередине.  
формулы Excel меняет автоматом с учетом добавления столбца.  
а в макросах не меняется. это вручную каждый раз придется править все ссылки?
 
Set rrange = Range("$E$10").CurrentRegion.Offset(2).Resize(Range("$E$10").CurrentRegion.Offset(2).Rows.Count - 2)  
Замените все Range("$E$10:$G$18") на rrange, и можете спокойно вславлять/удалять столбцы.
 
:(((((  
при печати из рабочей таблицы получается все криво косо.  
и линии не одинаковые и белый шрифт с тенью и вообще все криво  
http://s019.radikal.ru/i618/1204/33/50a75468fab2.jpg - оригинал (печать вручную через Adobe PDF)    
http://s018.radikal.ru/i502/1204/25/504a4ea889dd.jpg - печать макросом ExportAsFixedFormat
 
http://s019.radikal.ru/i614/1204/41/f346993fc87b.jpg - оригинал Adobe PDF  
http://s019.radikal.ru/i612/1204/5c/d9a220ab1b39.jpg - печать макросом ExportAsFixedFormat  
 
похоже настройки совсем разные. даже формат A4 Excel не сделал.  
при приближении на 800% файлы одинаковые. но при масштабе 100% в экселевском как бы плывут буквы, тона и строки.    
может это из-за "Быстрый просмотр в Web: да" и из-за неверного размера листа?  
подскажите, куда копать?  
у ExportAsFixedFormat всего то 9 свойств. неужели что то среди них недоглядела?
 
ExportAsFixedFormat - выдает неподходящее качество PDF  
 
остается PrintOut (Adobe PDF, PDFCreator, doPDF)  
но имя файла можно задать только при PrintToFile:=True, PrToFileName:=  
а значит формируется файл *.ps, который нужно дистиллером или еще чем-то сохранить в PDF. (если я правильно все поняла)  
 
подскажите, есть ли у нас на форуме кусок кода для именования файла и преобразования .ps в .pdf ?
 
уф, весь гугл фиолетовый от моих запросов и ссылок :)))))  
 
PDFCreator полностью скопировала    
а Adobe PDF скопировала только функцию дистиллера  
не забыть включить References PDFCreator и Acrobat Distiller
 
помогите! :(((  
 
если Call appDist.odist.FileToPDF("C:\111.ps", "C:\111.pdf", sJobOptions) запихнуть в процедуру Sub, и два раза вызвать эту процедуру в основном макросе - то выдается ошибка.  
 
а если просто два раза скопировать содержимое процедуры в основной макрос, то печатает два раза нормально  
 
как победить ошибку?
 
нагуглила аж два лечения  
 
1. Application.Wait Now + TimeValue("00:00:01")  
 
2.  
ActiveSheet.PrintOut , printtofile:=True, ActivePrinter:="Adobe PDF on Ne03:", _  
PrToFileName:=psfilename  
Dim pdf As New ACRODISTXLib.PdfDistiller  
pdf.FileToPDF psfilename, pdffilename, ""  
 
*кланяется гуглу и забугорным форумам и просит переименовать тему в "мемуары Лены" :)
 
Никак не пойму суть проблемы  
Sub Макрос2()  
doPDF = "D:\Do_Pdf\"  
nm = Split(ThisWorkbook.Name, ".")(0)  
oldName = doPDF & nm & ".pdf"  
newName = doPDF & nm & "a" & ".pdf"  
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _  
   ActivePrinter:="doPDF v7", _  
       IgnorePrintAreas:=False  
Application.Wait Now + TimeValue("00:00:02")  
Name oldName As newName  
End Sub
 
{quote}{login=RAN}{date=17.04.2012 06:26}{thema=}{post}Никак не пойму суть проблемы  
{/post}{/quote}  
 
суть проблемы в том, что если сделать к Вашему макросу новый:  
Sub Макрос3  
Call Макрос2  
Call Макрос2  
End Sub  
 
то на принтере Adobe PDf он выдаст ошибку :)  
впрочем, я уже нашла как это обойти
Страницы: 1
Читают тему
Наверх