Страницы: 1
RSS
Cохранение userform в файл pdf
 
Добрый день,

Помогите кодом ил направьте где искать...
Пробывал ExportAsFixedFormat xlTypePDF - для листов целиком и Range() работает на ура.
А можно ли сделать им также экспорт userform?

спасибо за помощь
 
Me.PrintForm
если поместить в модуль формы, то эта строка отправит на принтер по умолчанию форму. Правда, без заголовка.
Поэтому до того, как выполнить строку надо установить принтером по умолчанию любой принтер, который сохраняет в PDF, например Microsoft XPS Document Writer.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вставляю так  - у меня есть "doPDF v7"
Но не работает
Код
1
2
3
4
5
6
7
Private Sub Print_Form()
Dim STDprinter As String
STDprinter = Application.ActivePrinter
Application.ActivePrinter = "doPDF v7"
Me.PrintForm
Application.ActivePrinter = STDprinter
End Sub

Подскажете причину?
спасибо
С наступающим НГ!
Изменено: kmak - 31.12.2015 17:21:29
 
Код
1
MsgBox Application.ActivePrinter

doPDF v7 (DOP7:)
Похоже, но не так.
Изменено: RAN - 31.12.2015 14:48:56
 
Application.ActivePrinter не устанавливает принтер по умолчанию для ОС. Он устанавливает принтер для печати в Excel. А к VBA он отношения не имеет. Поэтому Вам надо в Панели управления сменить принтер по умолчанию и после этого выводить форму на печать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо
почти получилось, теперь разбираюсь почему не вызывает диал.окно  doPDF и отправляет на принтер по умолчанию
 
Он и не будет вызывать - он отправляет прямиком без возможности настроек.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
kmak, если допустимо использовать стороннюю программу, можно задействовать бесплатный IrfanView
Эту программу можно вызвать в режиме командной строки, она может скопировать заданный участок экрана (в данном случае активное окно, т.е. вашу юзерформу) и сохранить в файл с заданным названием и форматом. И без появления каких-либо окон.
Вставьте эту строку в код какой-нибудь кнопки на форме...
Код
1
Shell """C:\Program Files\IrfanView\i_view32.exe"" /capture=2 /convert=c:\capture_$U(%Y%m%d_%H%M%S).pdf"
... и после нажатия получите в папке c:\ файл вида capture_20151231_204238.pdf (т.е. с отметкой времени).
Параметры сохранения в PDF (качество, размер, ориентацию бумаги и т.д.) можно заранее выбрать в программе IrfanView и сохранить в .ini файле.
Изменено: Казанский - 31.12.2015 20:58:00
 
Казанский,
Большое спасибо за рекомендацию.

С наступившим!
 
С PrintForm управится не смог - у меня дает отстойный результат (не лезет на лист, да и заголовок мне необходим, т.к. итоговая картинка будет "документом").
Вот решил задачу таким способом, м.б. кому то пригодится - сохраняет форму (полностью) и в PDF, и в любой другой формат картинки, в данном примере - в JPG)
Сильно не ругайте, м.б. решение кривое (я "любитель"), но меня устраивает на все 100%.
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub CommandButton1_Click()
    Dim sName As String
    Dim p As Variant
    Dim sTemp As Worksheet, chrt As Chart
    p = ThisWorkbook.Path
    sName = TextBox1.Value
    DoEvents
    Application.SendKeys "(%{1068})"
    DoEvents
    Set sTemp = Workbooks.Add.Worksheets(1)
    Set chrt = sTemp.ChartObjects.Add(Left:=0, Top:=0, Width:=250, Height:=150).Chart
    With chrt
        .ChartArea.Border.LineStyle = 0
        .Paste
        .Export Filename:=p & "\" & sName & ".jpg", FilterName:="jpg"
        chrt.ExportAsFixedFormat xlTypePDF, Filename:=p & "\" & sName
        .Parent.Delete
    End With
    sTemp.Parent.Close 0
End Sub
Страницы: 1
Читают тему
Loading...