Notifications
Clear all

Impressão de UserForm

5 Posts
3 Usuários
0 Reactions
1,817 Visualizações
(@fkleinbley)
Posts: 62
Trusted Member
Topic starter
 

Tem como escolher a impressora e definir a impressão em paisagem usando o?

meuUserForm.PrintForm

Tem como colocar esse argumentos nesse código?

Nesse código que coloquei ele faz a impressão na impressora padrão e em modo retrato, quero que o usuário tenha como escolher a impressora e sempre deve ser em modo paisagem.

Procurei e não encontrei uma solução direta no PrintForm...

Ou reduzir a impressão para que se ajuste a folha da impressão...

 
Postado : 08/03/2016 12:06 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Pq nao cria uma planilha com a aparencia do formulario e imprime a mesma...

Muito mais simples.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 08/03/2016 7:02 pm
(@fkleinbley)
Posts: 62
Trusted Member
Topic starter
 

É que carrego 4 imagens de alta resolução cada vez que abro esse userform, tenho diversas planilhas em que em cada uma, quando abre esse userform ele carrega 4 imagens diferentes (para cada planilha carrega 4 imagens diferentes), sendo que usando o userform não saio da planilha em que estou (fica no fundo do userform) e parece que carrega mais rápido as imagens...
Como seria o comando em vba para alterar um picture em sua caixa em uma planilha?
Por que eu poderia quando mandar imprimir ele carregar essas imagens para essa planilha espelho e depois imprimir (como você falou), mas precisaria do código vba para alterar a imagem em sua caixa na planilha...

 
Postado : 09/03/2016 12:17 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Ficou um pouco confuso sua explicação, tambem sou da opinião que poderia carregar as imagens direto na planilha e depois imprimir, mas sem detalhes de como você está fazendo atualmente fica dificil.

Porem, para configurar a pagina da forma que pretende, e supondo que seu formulario tenha um botão com o nome "CommandButton1", cole a rotina abaixo e veja se é isto, se o no nome do botão for outro nome ajuste na rotina.

Esta rotina cria um novo arquivo com a imagem do userform, configura a pagina, imprime e depois fecha o arquivo criado sem salva-lo.

Option Explicit

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Const VK_SNAPSHOT = 44
Const VK_LMENU = 164
Const KEYEVENTF_KEYUP = 2
Const KEYEVENTF_EXTENDEDKEY = 1


Private Sub CommandButton1_Click()
    DoEvents
    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
    keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
    
    DoEvents
    
    Workbooks.Add
    
    Application.Wait Now + TimeValue("00:00:01")
    
    ActiveSheet.PasteSpecial Format:="Bitmap", Link:=False, DisplayAsIcon:=False
    
    ActiveSheet.Range("A1").Select
    
    'added to force landscape
    ActiveSheet.PageSetup.Orientation = xlLandscape
    
   
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With

        ActiveSheet.PageSetup.PrintArea = ""
    
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.75)
        .RightMargin = Application.InchesToPoints(0.75)
        .TopMargin = Application.InchesToPoints(1)
        .BottomMargin = Application.InchesToPoints(1)
        .HeaderMargin = Application.InchesToPoints(0.5)
        .FooterMargin = Application.InchesToPoints(0.5)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 300
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlLandscape
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = False
        .FitToPagesWide = 1
        .FitToPagesTall = 1
    End With
        
        ActiveWindow.SelectedSheets.PrintOut Copies:=1
        ActiveWorkbook.Close False
End Sub

Fonte : Printing VBA userform as Landscape
https://social.msdn.microsoft.com/Forum ... rum=isvvba

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 09/03/2016 2:08 pm
(@fkleinbley)
Posts: 62
Trusted Member
Topic starter
 

Perfeito.... Vou adaptar esse código e vai funcionar... Obrigado....

 
Postado : 15/03/2016 6:46 am