Faro Barros Dicas RETORNO
Macro p/Excel Informática
Macro de Impressão Macro#1
Actualizada em 20031024 Macro#2

  

 

 

Listo abaixo mais uma Macro para uma Folha de Cálculo Excel.

Ver Folha Excel

Esta Macro permite imprimir directamente uma série de células que cumprem 
determinadas condições.

A Macro principal com o nome (Imprime) chama por sua vez uma outra subrotina (Cabeca) para colocar um cabeçalho na impressão.

Para esta rotina, definir a área em que se vai trabalhar deste modo:

Como exemplo, e só como exemplo, considere que:

Na célula A1 se indica a linha (ex. A11) onde se começa a análise.

Na célula B1 indica-se a linha (ex. E50) onde deve terminar a operação.

Na célula A2 indica-se a Coluna (ex. bbb) a examinar.

Na célula B2 indica-se o Texto a procurar, para sair na listagem (para este exemplo "bbb"

 

Para boa compreensão do programa, coloco linhas de informação antes de cada operação indicada nesta página.

Nota- Às vezes a cópia directa do ecrã por ctl+C ao transpor-se para a área das Macros, no Excel, dá origem a linhas de código que ficam como linhas de informação (devido a má interpretação dos apóstrofes).

Por isso mesmo coloco uma página do código sem explicações que pode usar clicando AQUI.

A alteração das variáveis, como fizemos na página anterior deste Portal, permitem ajustar esta Macro a outras necessidades do operador.

Trata-se evidentemente de um pequeno exemplo que permitirá aos iniciados treinarem nesta área, analisando, alterando e ajustando às suas necessidades.

O botão com o título [teste] serve para arrancar com a Macro. Se alguém estiver interessado em saber como se constrói um botão de comando, basta  escrever para
Faro Barros a pedir a informação.

Não a dou agora porque descrição para se gerar um botão de comando alongaria demasiado esta página.

Algumas das soluções poderiam ser implementadas com maior versatilidade, mas achei que por agora isto seria suficiente.

Basta copiar o texto abaixo e transferi-lo para a área das Macros, em qualquer Folha de Cálculo Excel, para funcionar, se deixar as Macros activas.

‘  das Macros ================================================

‘  da Macro que gera o cabeçalho -----------------------

Sub Cabeca()

‘ Esta Macro serve para gerar um cabeçalho

‘ Limpa uma área de células onde se vou colocar os resultados

Range("f8,F9,f10").Clear

 

‘ Coloca em cada célula F8 a F10 texto para cabeçalho

‘ situa-se em F8

Range("f8").Select

‘ leva para esta célula o texto que quiser

ActiveCell.Value = "Este é o Cabeçalho"

‘ e assim sucessivamente por mais 2 linhas

Range("f9").Select

ActiveCell.Value = "Folha de teste"

Range("f10").Select

ActiveCell.Value = "======================"

End Sub

‘ Fim da Macro que gera o cabeçalho -----------------------

 

Início da Macro de Impressão ------------------------------------------

Sub Imprime()

‘ Esta Macro trata de gerar a impressão

‘ Definição de variáveis

Dim Z%, S% Coluna$, Texto$

‘ Aconselho a usar-se sempre com Letra maiuscula inicial se Públicas, 
‘ ou geradas por DIM

 

 

‘ Limpa toda a área de F1 até H50

Range("F1", "H50").Clear

‘ Coloca-se em A1

Range("A1").Select

‘ e lê o que lá está

desde$ = Trim(ActiveCell.Value)

‘ Coloca-se em B1

Range("B1").Select

‘ e lê o que lá está

ate$ = Trim(ActiveCell.Value)

‘ Procura a coluna que deve examinar

Range("A2").Select

‘ Regista em Coluna$

Coluna$ = Trim(ActiveCell.Value)

‘ á procura do texto que lá esta

Range("B2").Select

Texto$ = Trim(ActiveCell.Value)

‘ Situa-se agora na dita coluna, na linha 11

Range(Coluna$ & "11").Select

‘ marca a primeira linha onde quer colocar os resultados da busca

Z% = 11

‘ e faz uma busca até à linha nº 50 (por exemplo)

For l% = 11 To 50

 

‘ Coloca-se na linha l%

Range(Coluna$ & Trim(Str(l%))).Select

‘ Anda para a esquerda (Coluna A) para recolher o que está lá (0,-1)

ActiveCell.Offset(0, -1).Range("A1").Select

xb$ = Trim(ActiveCell.Text)

 

‘ volta a mexer-se uma casa para direita

ActiveCell.Offset(0, 1).Range("A1").Select

‘ e coloca em Xc$ o texto dessa célula

 

xc$ = Trim(ActiveCell.Text)

‘ volta a mexer-se uma casa para direita

ActiveCell.Offset(0, 1).Range("A1").Select

‘ e coloca em Xd$ o texto dessa célula

xd$ = Trim(ActiveCell.Text)

‘ e repete

ActiveCell.Offset(0, 1).Range("A1").Select

xe$ = Trim(ActiveCell.Text)

‘ examina agora o conteúdo da coluna C para ver se há qualquer coisa igual ‘ a Texto$

‘ S% indica o carácter inicial 

s% = InStr(xc$, Texto$)

‘ se s%=0 (não há), é porque esta linha não interessa

' e vai voltar ao princípio da próxima linha

If s% = 0 Then GoTo NextL

‘ se a linha é boa, leva o resultado para a área de impressão

‘ Coloca-se em F11 da primeira vez, dado por Z% (variável)

Range("F" & Trim(Str(Z%))).Select

 

‘ copia para cada célula os valores xb$, xc$, etc, que lhe interessam.

ActiveCell.Value = xb$

 

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = xc$

 

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = xd$

ActiveCell.Offset(0, 1).Range("A1").Select

ActiveCell.Value = xe$

‘ para a próxima vez vai baixar uma linha nesta área

Z% = Z% + 1

NextL:

Se todas as células desta linha estão vazias, o melhor é saltar fora já, para se terminar o trabalho

If Trim(xb$ & xc$ & xb$ & xc$) = "" Then Exit For

‘ senão repete para a próxima linha l%

Next l%

 

‘ Quando termina as buscas processa o cabeçalho chamando a rotina

Call Cabeca

' coloca-se no início do cabeçalho

Range("F8", "I" & Trim(Str(Z%))).Select

 

' indica a área a imprimir

Worksheets("Sheet1").PageSetup.PrintArea = "$A$1:$C$5"

 

ActiveSheet.PageSetup.PrintArea = "F8: I" & Trim(Str(Z%))

' e Imprime uma cópia 

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True


' desactiva a área de impressão

ActiveSheet.PageSetup.PrintArea = ""

 

' coloca-se na célula A3

Range("A3").Select

' passa para lá o texto

ActiveCell.Value = "A selecção foi Impressa"

' coloca-se no início 

Range(Coluna$ & "11").Select

Fim:

End Sub

' Fim da Macro de Impressão ------------------------------------------

 

‘ Fim das Macros ==============

Para ver as Macros concentradas sem explicações, de modo a poder copiá-las directamente para a área de Macros de uma folha Excel clique Aqui

 


Precisando de Informação adicional contacte Faro Barros

 

Faro Barros

 

RETORNO   Início
à Página anterior Acessos  Alertas Apoios Crónicas Desenhos Dicas Esculturas
Fotografia  Fotos  Informática Pintura Poesia Português Quem Somos Sugestões Textos