Notifications
Clear all

macro VBA para impressão não funciona

2 Posts
2 Usuários
0 Reactions
1,167 Visualizações
(@dilermando)
Posts: 0
New Member
Topic starter
 

Boa noite. Minha situação em Excel/VBA:

1 - arquivo "cadastrar paciente.xls" contendo uma única planilha: "cadastrar paciente" e duas macros: "gravar paciente" e "imprimir ficha paciente"

2 - arquivo "cadastro pacientes.xls" contendo duas planilhas: "cadastro pacientes" e "agenda"

3 - após abrir "cadastro pacientes.xls", digito alguns dados na planilha "cadastrar paciente"

4 - executo a macro "gravar paciente" (em "cadastrar paciente.xls"), para gravar os referidos dados na planilha "cadastro pacientes" (no outro arquivo "cadastro pacientes.xls")

5 - a macro "imprimir ficha paciente" foi gravada objetivando imprimir um bloco de células da planilha "cadastrar paciente" (em "cadastrar paciente.xls")

Sub imprimir_ficha_paciente()
'   selecionar dados para impressão da ficha do paciente
    Range("G4:H22").Select
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    Application.PrintCommunication = True
    ActiveSheet.PageSetup.PrintArea = ""
    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .LeftHeader = ""
        .CenterHeader = ""
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.511811023622047)
        .RightMargin = Application.InchesToPoints(0.511811023622047)
        .TopMargin = Application.InchesToPoints(0.78740157480315)
        .BottomMargin = Application.InchesToPoints(0.78740157480315)
        .HeaderMargin = Application.InchesToPoints(0.31496062992126)
        .FooterMargin = Application.InchesToPoints(0.31496062992126)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = True
        .CenterVertically = True
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperLetter
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .ScaleWithDocHeaderFooter = True
        .AlignMarginsHeaderFooter = True
        .EvenPage.LeftHeader.Text = ""
        .EvenPage.CenterHeader.Text = ""
        .EvenPage.RightHeader.Text = ""
        .EvenPage.LeftFooter.Text = ""
        .EvenPage.CenterFooter.Text = ""
        .EvenPage.RightFooter.Text = ""
        .FirstPage.LeftHeader.Text = ""
        .FirstPage.CenterHeader.Text = ""
        .FirstPage.RightHeader.Text = ""
        .FirstPage.LeftFooter.Text = ""
        .FirstPage.CenterFooter.Text = ""
        .FirstPage.RightFooter.Text = ""
    End With
    Application.PrintCommunication = True
    Selection.PrintOut Copies:=1, Collate:=True
    Range("A1").Select
End Sub

6 - a macro "imprimir ficha paciente" (em "cadastrar paciente.xls") nem começa a imprimir: ela abre a planilha "cadastro pacientes" existente no outro arquivo ("cadastro pacientes.xls), e nada mais acontece

Aparentemente, o GPS do meu Excel/VBA está mal calibrado ... minha macro para impressão não consegue endereçar a planilha correta ("cadastrar paciente") no arquivo correto ("cadastrar paciente.xls").

Agradeço por ajudar-me a resolver este problema !

 
Postado : 25/05/2015 5:18 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Dilermando,

Bom Dia!

Não sei se entendi corretamente a sua necessidade...

Todavia, vai aqui uma dica que talvez possa resolver seu problema:

Quando se trabalha macros com a utilização de arquivos diferentes e planilhas diferentes (abas), é de bom tom, conforme preceitua a boa técnica de programação, que se utilize o caminho completo do objeto que se quer acessar como também é bom que se selecione antes esse objeto a ser acessado para se cumprir alguma tarefa (como a de imprimir, por exemplo).

Desse modo, na sua macro de impressão acima, onde tem a linha:

Range("G4:H22").Select

Acho que deveria ter antes:

Workbooks ("cadastrar paciente.xls").Activate
'Observe qua aqui estou utilizando o nome "Plan1" como a planilha onde estão as células que você quer selecionar para imprimir. Mude para o nome correto da sua aba
Workbooks ("cadastrar paciente.xls").Sheets ("Plan1").Range("G4:H22").Select
 
Postado : 26/05/2015 5:19 am