Notifications
Clear all

Inserir formas (Linha) ou borda através de Macro

30 Posts
2 Usuários
0 Reactions
7,872 Visualizações
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Galera, estou desenvolvendo um Diário Eletrônico para os professores de minha Escola e talvez esse Diário seja apresentado as demais escolas da rede estadual do meu estado. Para quem é familiarizado com diários de professor vai ser fácil entender e pra quem não é eu explico. Um exemplo apenas para coluna nomes.
Na coluna nomes nós temos 60 linhas B15:M74. Acontece que na maioria das vezes a quantidade de alunos não chega até 60. Suponhamos que tenhamos alunos até a linha de nº 50 (B64:M64), ou seja, dessa linha até a última fica vazio. Quando fechamos o bimestre nós, professores, temos que fazer um risco do vértice superior esquedo da primeira célula vazia até o vértice inferior direito da última célula vazia (No exemplo fica fácil de entender). Dessa forma fica evidente que nesse espaço riscado não pode existir nenhuma informação. Todo campo preenchido pelo professor ou pela secretaria após finalizado tem que receber esse risco. Enfim, o que eu quero saber é se existe a possibilidade de uma macro através de um atalho ou botão fazer esses riscos automaticamente para os professores, pois eles são péssimos com excel e como preenchem muitos diários não podem ficar perdendo tempo em fazer risco de caneta no mesmo.

Uma alternativa seria uma borda interna perpendicular tracejada dentro das células. Abaixo de cada coluna específica um botão para ela. Quando o professor clica as bordas internas acham as células vazias e fazem o serviço automaticamente. (Vou imprimir um modelo pra ver qual tracejado fica mais visível na impressora laser). Uma alternativa seria o botão retirar as bordas internas caso o professor fosse fazer alterações, tal como fazer uma recuperação ou a inserção de um aluno que se matriculou depois. Algo como um liga e desliga e com um aviso para o professor só usar esse recurso quando o diário estiver realmente finalizado e pronto pra impressão. É meio complexo pra exemplificar com palavras.

Apenas a planilha Janeiro está desbloqueada. As notas so são inseridas no mês seguinte e portanto na BH15 tem o risco característico que eu falei nessa planilha. Preenchi para que vocês tenham uma visão de como fica após o professor preencher as partes VERDES e como deveria ficar após a finalização.

 
Postado : 20/03/2012 12:22 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Coutinho, muito obrigado. Não, a greve não acabou e espero que dure séculos, pois estão me roubando quase 9000 reais por ano em gratificações que eram direitos adquiridos. Enfim, sobre a planilha, era justamente essa solução que eu "queria" aplicar, por se tratar de um método mais simples e tal. Contudo, a reclamação das professoras foi geral pela questão visual. Na hora da impressão a planilha fica com 60% do tamanho original e as células ficam bem pequenas, para as pessoas mais rodadas, que a visão já está prejudicada, é muito ruim de ver. Eu vou tentar empurrar esse método seu aqui, pois na minha concepção a planilha já vai estar finalizada mesmo e basta apenas o professor assinar e entregar. No computador a visualização é bem melhor, pois temos o recurso de zoom e tudo mais.

Abusando da sua generosidade veja o seguinte problema: Precisariamos de um botão que localiza todas as células na planilha que contém essa borda perpendicular das suas macros e retirasse SOMENTE a mesma borda. Seria como um botão de liga e desliga. Se por um acaso houver correção, e sempre tem, o professor executa a macro e ela desfaz de todas as colunas. Limpa-se tudo.

Eu fiz pesquisas aqui sobre o addConector e vi alguns exemplos. Realmente é mais complexa, porém ela seria muito mais simples de aplicar e faria com que o diário digital ficasse praticamente idêntico ao físico. O professor sabe selecionar o espaço que é pra fazer o risco, é coisa simples, apertava o botão da macro e pronto o risco estava criado. Pra deletar é só selecionar a linha e excluir. No excel tudo tem jeito.
Espero um parecer seu.
Abraço e obrigado de novo.

 
Postado : 22/03/2012 1:59 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

maublues, ja estava saindo qdo vi sua postagem, de fato da forma que citou o visual fica melhor.

Devo chegar mais cedo o hj em casa e vou ver se consigo olhar a sua questão primeiro, não gosto de prometer, já fiz isto e hj tem muita gente cobrando, tambem quem mandou participar de varios foruns, mas não me queixo, vou fazendo na medida do possivel, algumas questões é at´simples, não precisamos nem do exemplo, só analizando as rotinas as vezes conseguimos deduzir.

As rotinas que enviei, fiz rapidinho aqui no serviço, nem cheguei a testar, mas se ajudou está bom.

Diz uma coisa, nas celulas vazias que terão a borda na diagonal, elas precisam ter as linhas Horizontais (bordas) ? se não precisar fica mais fácil fazer da forma que disse sem ter de utilizar shapes.

Quando chegar em cas avejo sua resposta .

[]s

 
Postado : 22/03/2012 2:15 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Veja esse exemplo que achei na internet.

Sub AddArrow()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, Range("C5").Left, Range("C5").Top, Range("F11").Left, Range("F11").Top)
shp.Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
End Sub

Eu não sei praticamente nada de VB, mas consigo captar as dúvidas dos caras em inglês. O lance seria adaptar esse código aí pra funcionar com uma seleção qualquer do usuário e não com as células específicas. Pra funcionar o excel tem que jogar na macro a seleção que eu fiz manualmente. Se eu seleciono, por exemplo, de A1 a D15 a macro tem que considerar essa seleção. Eu testei essa aí de cima e não tem coordenada ela traçou a setinha de canto a canto. Acho que você captou agora a jogada que eu quero.

 
Postado : 22/03/2012 2:58 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Consegui uma outra versão, de bordas, dê uma olhada, talvez goste.

Para não poluir o fórum, tive que postar em...
http://www.sendspace.com/file/6s9scs

Att

 
Postado : 22/03/2012 8:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Alexandre, bom exemplo, eu já havia pensado nesta possibilidade, e até tinha uma rotina pronta, mas fiquei aguardando a resposta do maublue quanto a isto, pois como se trata de um livro e o mesmo tem as linhas numeraadas, perguntei :

Diz uma coisa, nas celulas vazias que terão a borda na diagonal, elas precisam ter as linhas Horizontais (bordas) ? se não precisar fica mais fácil fazer da forma que disse sem ter de utilizar shapes.

Se não precisar exibir as linhas, sua solução resolve.

[]s

 
Postado : 22/03/2012 8:48 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Eu pensei nessa solução ai. Só que ela tem um problema. Ela só está mesclando o que está abaixo. Precisa mesclar o que está a frente também. De toda forma precisa ter as linhas, ou seja, não pode apagar e como a mesclagem só se faz em quadrados não funciona. Desculpem-me por colocá-los em situação tão complexa.

Bem, vamos lá, eu tenho uma solução aqui, mas vou precisar que vocês apenas adaptem essa macro aqui para inserir as células. Eu consegui desenvolver uma macro aqui que seleciona o intervalo que eu quero perfeitamente. Amanhã eu vou postá-las aqui. Mesmo eu sendo um novato no ramo vou conseguir achar o caminho da solução.

Sub AddArrow()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, Range("C5").Left, Range("C5").Top, Range("F11").Left, Range("F11").Top)
shp.Select
Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
End Sub

A tarefa de vocês é apenas dar um jeito de inserir nessa macro aí de cima as células (superior esquerda e inferior direita) do intervalo que eu vou selecionar através de uma macro. Abraços amigos.

 
Postado : 22/03/2012 9:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Maublues,

A tarefa de vocês é apenas dar um jeito de inserir nessa macro aí de cima as células (superior esquerda e inferior direita) do intervalo que eu vou selecionar através de uma macro. Abraços amigos.

Falando assim parece simples, veja por si mesmo as rotinas em minha adaptação, execute-as, e depois adicione a rotina abaixo só para teste e veja a diferença.

Sub AddArrow()
    Dim shp As Shape
    'Range com as Linhas Vazias de acordo com o seu modelo
    Set shp = ActiveSheet.Shapes.AddConnector(msoConnectorStraight, Range("B63").Left, Range("B63").Top, Range("M74").Left, Range("M74").Top)
    shp.Select
    Selection.ShapeRange.Line.EndArrowheadStyle = msoArrowheadOpen
End Sub

O sono não deixa continuar, daqui a pouco tenho de ir trabalhar, deu um pouco trabalho, mas acho que estamos quase lá,

Eu não havia lidado ainda com este tipo de situação, mas com as dicas, alias aula do site abaixo, fiz uma adaptação, não realizei vários testes, então teste e qq duvida retorne.

FONTE : - Programming Excel 2007 and Excel 2010 AutoShapes with VBA (Guest Post)
Peltier Tech Blog | Excel Charts

http://peltiertech.com/WordPress/progra ... z1pugMNkbN
Vale a pena baixar o modelo que tem neste site, tem até uma animção com os shapes bem interessante.

Add shapes (Diagonal)
Adaptação Mauro Coutinho

Deixa eu ir dormir um pouco, abraços.

 
Postado : 22/03/2012 11:07 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Mauro, seu Windows é 32 bits? O VB dá um erro de compilação aqui e fala que o código deve ser atualizado para uso em sistemas 64 bits. Depois dá um aviso de vinculos com arquivo externo. Isso gera algum problema? Vou testar em outro PC aqui que é 32 bits.

 
Postado : 23/03/2012 9:20 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Maublus, o meu windows ainda é o Xp 32 bits, e existe incompatibilidade com 64 bits, o aviso de arquivo externo pode ser pelo fato de estar faltando alguma DLL para habilitar as referencias.

Para resolver, ou instala o excel 32 bits ou teremos que aguardar algum usuário que tem a v 64 para solucionar as incompatibilidades.

Aqui fala da v 2010, mas vale para a 2007 tambem, já vi casos com esta versão.
Escolha uma versão de 32 bits ou de 64 bits do Microsoft Office
http://office.microsoft.com/pt-br/excel ... 69476.aspx

[]s

 
Postado : 23/03/2012 10:15 am
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Mauro, fiz um teste rápido aqui no outro PC que é 32 bits e é esse o caminho mesmo. Ficou muito bom. Adorei. Agora, nós vamos dar um tempo para inserir essas melhorias.
A minha versão é 64 bits e por isso ela anda dando esses problemas. Vou desinstalar e colocar a de 32bits. Agorinha eu volto.

 
Postado : 23/03/2012 11:24 am
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Galera, estou de cama. Projeto paralisado até amanhã. BFDS!

 
Postado : 24/03/2012 3:14 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Melhoras e muita saúde.

 
Postado : 24/03/2012 7:24 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Galera, estou finalizando as últimas formatações aqui nas duas planilhas que vão receber essa macro maravilhosa que vocês desenvolveram pra mim. Estou conseguindo fazer umas adaptações pra não aparecer 0 em lugar de nome e números de falta vázios. Assim vai ficar bem fácil do professor preencher essa planilha e possivelmente, por conta das células protegidas, não haverá como ele errar. Estou apreendendo bastante no excel e isso é bom. Obrigado a todos.

 
Postado : 26/03/2012 7:49 pm
(@maublues)
Posts: 50
Trusted Member
Topic starter
 

Galera e o Mauro, depois de 1 ano estou de volta com minha planilha. Ela contia alguns erros que foram resolvidos até o fim do ano passado. Por incrível que pareça ela foi um sucesso entre os professores e será distribuída a outras escolas. Agora gostaria da ajuda do Mauro e do pessoal para implantar o Add Shapes para o ano letivo de 2013. Essa é a principal reivindicação dos professores.

 
Postado : 25/01/2013 11:41 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Maublues, ainda bem que correu tudo bem, tanto com sua saude como o exemplo que você elaborou, para que possa retornar a esta outra solicitação, o ideal é anexar seu modelo compactado de como ele ficou para podermos ajudar a altera-lo, assim outros colaboradores poderão ajudar tambem.

[]s

 
Postado : 25/01/2013 9:19 pm
Página 2 / 2