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 !
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
Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)
Atenciosamente
Wagner Morel