Notifications
Clear all

Biblioteca de código reutilizável

32 Posts
3 Usuários
0 Reactions
4,221 Visualizações
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu tenho um sonho, na verdade estou desenvolvendo (com algumas participações devidamente creditadas) um modelo de projeto, uma biblioteca de códigos VBA reutilizáveis.

Vamos lá, eu tenho por exemplo que escrever (e muitas vezes, reescrever) códigos no meu dia a dia de trabalho. Tendo em vista que sou preguiçoso, comecei a perceber quais eram as rotinas que eu mais escrevia, e comecei a criar essas rotinas específicas, perfeitamente reutilizáveis de um projeto para outro.

Fiz tudo em inglês pois uma vez li que as boas práticas da programação precisam que assim seja. Tem funções do tipo:
Function NameExists(byref wbk as excel.workbook, sName as string) as boolean
Function WorksheetExists(byref wbk as excel.workbook, sName as string) as boolean
Function SetSheet(byref wbk as excel.workbook, sName as string) as excel.worksheet
Sub OpenWorkbook(byref wbk as excel.workbook, byval FilePath as string, ReadOnly as boolean)
Function GetUsedRange()
Function GetArrayFromRange()
Function GetDictionaryFromRange()

Muitas outras. . . .

Enfim, o que eu quero com esse tópico é lançar uma biblioteca do Planilhando, mas não como a que temos hoje, que é tudo separado e diversos modelos bem bacanas e tal.
Seria uma biblioteca só, um modelo de projeto, a partir do qual um projeto pode ser iniciado, já com muitas funções super úteis escritas em código. Um código aberto para estudo. Para aprimorar a qualidade geral de tudo que se desenvolve por aí.
Queria junto com vocês, analisar a aceitabilidade da ideia de um Modelo VBA Colaborativo, onde todos desenvolvem suas rotinas reutilizáveis e úteis, e eu vou montando de forma ordenada e bonita, deixando sempre os créditos a quem desenvolveu, e a quem revisou e a quem melhorou, etc.

A ideia é eu disponibilizar meu modelo em breve. O que vocês acham ? Quem quer participar? Quem tem ideias boas?

Segue link para a biblioteca: http://1drv.ms/Xfpw7j

FF

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

 
Postado : 28/07/2014 3:20 pm
(@edcronos)
Posts: 1006
Noble Member
 

Eu até gostaria de participar,
mas creio que meu conhecimento seja um tanto quanto limitado.(além do fato de não saber inglês)

a minha planilha segue um rumo praticamente igual, tanto em macros quanto na própria planilha,
tudo serve para tudo, a própria planilha se ajusta aos dados.
"mas ainda não sei como me livrar da tabela de posições

Atualmente estou trabalhando em umas macros de deslocamento de Arrays por referencia, "E convertendo outras para usar referencia"

Ex. espelhamento Horizontal e vertical,

se te interessar..."mas são bem básicas"

até...

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 28/07/2014 7:09 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Cara, qualquer ideia nova será bem vinda, e não se preocupe com o inglês, eu traduzo, até pq, eu serei o revisor!
eu tenho um mó dulo cheio de rotinas específicas para trabalhar com matrizes / arrays em código.
Tem clonar matriz, tem pegar coluna ou linha da matriz, appendar matrizes verticalmente e horizontalmente, tem filtrar matriz, pegar matriz diretamente das células, os valores, as fórmulas ou as fórmulas r1c1. Se tiver alguma coisa boa sua que eu não pensei ainda e que pode ser bom, eu faço questão de reescrever no outro idioma e deixar os créditos pra você lá !

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

 
Postado : 28/07/2014 7:15 pm
(@edcronos)
Posts: 1006
Noble Member
 

cara, ter eu até tenho algo que ainda não vi por aí "vi de maneira limitada"
mas esse...
além de não ter terminado ainda "e já vai para as 450 linhas fora as macros auxiliares" ... é o meu xodó :P
para falar a verdade é o coração da minha planilha, ela realoca os dados para ficar no formato e posições corretas.

bem, imagino que vc deve ter um acervo grande,
eu ainda sou principiante "comecei praticamente esse ano"

Mas bem, ideias eu tenho um monte, mas vai saber se vc ainda não teve...

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 28/07/2014 7:28 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Estou no meio de um projeto, e sempre que encontro uma possibilidade de algo reutilizável, eu acrescento.
Ao final, eu entrego pro cliente, faço uma cópia, e limpo todo o lixo específico do projeto do cliente, mantendo somente meu modelo.
Claro que pra isso, eu tenho uma vivência de mais de 10 anos de experiência para saber eliminar de fato todo o lixo que eu crio. Qdo digo *lixo, me refiro a coisas nào utilizaveis, ou seja, as rotinas específicas do negócio do cliente.

Enfim, sim tenho um acervo enorme e respondoi e editei minha resposta no seu outro tópico, sugiro que a leia novamente, pois eu incluí uns detalhes que nào estavam na primeira redação dela. Cara, meu modelo tb é meu xodó, eu prefiro não compartilhar com ninguém. Mas, eu penso que todo conhecimento deve ser compartilhado, e vou postar, com uma dó, pq sei que vai ter um monte de gente usando e tirando os créditos, como já fizeram com modelos simples de exemplos de funções do Excel.

Mas segue o jogo. Eu não consigo mudar quem eu sou. Vou continuar compartilhando, as pessoas que são do meio, sabem que eu sou, então tá bom!

Eu coloquei uma parte do modelo, menos de 3%, no outro tópico. Dá uma olhada lá.

FF

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

 
Postado : 28/07/2014 8:01 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Gostei da ideia, Fernando.

Eu estava fazendo o mesmo no trabalho, até que algum @*%&#^da informática formatou meu PC sem avisar, e acabei perdendo tudo. :'(

Mas, se puder, quero participar.

Abs

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 29/07/2014 7:37 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

só mandar ideias de códigos ou os próprios códigos...
o meu não está bom para compartilhar ainda pq estou no meio de um projeto e precisao fazer limpeza. Mas qquer coisa útil seria e será bem vinda !
E estará no primeiro modelo publicado!

FF

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

 
Postado : 29/07/2014 8:17 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde Fernando

Eu também gostei da ideia, mas só discordo de ser em Inglês, afinal estamos no Brasil, e a nossa língua mãe continua sendo o português.
Se você tem facilidade em inglês porque morou nos Estados Unidos, não é o caso da maioria que frequenta o fórum.
E sou a favor até, de que sejam colocados comentários em português nos códigos, pois assim, estaria cumprindo com mais um dos objetivos do fórum que é ensinar.

É a minha opinião.

[]s

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

 
Postado : 29/07/2014 12:22 pm
(@edcronos)
Posts: 1006
Noble Member
 

Fernando,

basicamente também é uma ideia que tive a tempos...
viewtopic.php?f=21&t=12297
mas minha ideia era ter um banco de dados das macros genéricas e readaptáveis.
claro que dentro de meu conhecimento.

mesmo pq eu tenho uma péssima memoria,

O patropi tem uma boa questão,
eu mesmo me enrolei para aprender VBA pq nunca sabia oq era comando ou variável ou outra coisa definida pelo programador.
levei uma surra, até entender que VBA "basicamente" era o BASIC que eu aos 12 anos de idade programava em um TK95.

------------------------------------------------------------------------
OFF TOPIC-----------------------------------------------------------
vira e volta me enrolo para escrever column, até msgbox eu levei um tempo para não ter que procurar macro que tinha escrito,
por isso uso nomes de variáveis o mais curto possível
Agora com ByRef e o ByVal estou num novo aperto :? pq tenho que tenho que colocar nomes grandes para saber oq cada coisa faz.

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 29/07/2014 12:40 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

... gostei da ideia, mas só discordo de ser em Inglês, afinal estamos no Brasil, e a nossa língua mãe continua sendo o português.
Se você tem facilidade em inglês porque morou nos Estados Unidos, não é o caso da maioria que frequenta o fórum...

Então, a minha decisão em fazer em inglês não tem a ver com o fato de eu ter morado fora, embora isso contribua. Eu li num artigo uma vez, de um americano, que todo código deveria ser em ingês, devido a facilidade de reutilização e releitura e aprendizado no mundo todo. Eu penso que, se escrevo em português, eu estou limitando minha *audiência àqueles que só falam português. Por outro lado, ao fazer em ingês, a abrangência é menor em território nacional, fato, mas é maior em território mundial. Essa é a razão. MAS para agradar gregos e troianos, pensei em fazer um módul específico com as chamadas paras as funções em inglês, mas os nomes, todos em português. Isso continuaria atendendo a padronização mundial e também atenderia o padrão nacional.

E vou fazer assim mesmo. Dentro de cada módulo, para cada rotina, criarei uma réplica da sua assinatura, completamente traduzida e funcional, com nome em portugues e variáveis em portugues, mas dentro desta rotina, vou fazer a chamada para o código em inglês, simplesmente repassando os objetos e as variáveis como parâmetros.
O que você acha Patropi? Posso adicionar os comentários também em português, assim ninguém fica de fora.

FF

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

 
Postado : 29/07/2014 6:24 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fernando,

basicamente também é uma ideia que tive a tempos...
viewtopic.php?f=21&t=12297
mas minha ideia era ter um banco de dados das macros genéricas e readaptáveis.
claro que dentro de meu conhecimento.

Parabéns pela ideia Edcronos, é sensacional, rs. Eu só faria diferente uma coisa, colocaria tudo num mesmo arquivo, devidamente categorizadas, fica bem mais fácil usar e manipular. E elas (as rotinas) podem conversar entre si, ou seja, compartilhar funcionalidades. E é o que meu modelo já faz. :)

... por isso uso nomes de variáveis o mais curto possível
Agora com ByRef e o ByVal estou num novo aperto :? pq tenho que tenho que colocar nomes grandes para saber oq cada coisa faz.

Não economize no nome de variável. Use nomes que façam sentido. Aqueles nomes de variáveis da ClonarArray() são complicados. Precisei ler umas 10 vezes o código para entender do que se tratam. Não há necessidade de dar à variável o nome de um livro, mas nao precisa deixar o mais curta possível. É só usar o bom senso.

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

 
Postado : 29/07/2014 6:35 pm
(@edcronos)
Posts: 1006
Noble Member
 

fernando, eu uso variáveis curtas pq para mim é mais fácil de entender o escopo do código, com nomes grandes mesmo fazendo sentido eu esqueço até como escrever.
----------------------------------------------------------------------------------------------------------

Eu li num artigo uma vez, de um americano, que todo código deveria ser em ingês, devido a facilidade de reutilização e releitura e aprendizado

devo concordar que o inglês é uma base,
mas já encontrei soluções e explicações de coisas que procurei até em russo e japonês.
com tradutores online cada vez mais eficientes, parte dessa barreira linguística cai bastante."pelo menos em se tratando de internet"

estando num fórum de língua portuguesa o básico é encontrar soluções no mesmo idiomas da língua nativa,
sendo a maior parte dos usuário nativa desse idioma, ter outra língua envolvida, fora a da impossibilidade técnica, não tem muita lógica.
"Ps. E claro que um americano "fora da america do sul" vai achar o inglês mais fácil :P "

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 29/07/2014 7:21 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Fernando, a ideia é ótima, tempos atrás um colega do Forum disponibilizou um arquivo contendo 15.000 macros, e na época acabei intervindo e apagando o arquivo e aguardei uma posição do Eron, pois o arquivo disponibilizado é comercializado pelo saberexcel, não vou relatar tudo novamente, é só conferir no link abaixo o desfecho.
COLEÇÃO 15.000 MACROS
viewtopic.php?t=3543&p=16655

O que achei interessante é o programa que é gratuito que foi utilizado para juntar todas as rotinas, o TreePad Lite Freeware - http://www.treepad.com/treepadfreeware/ .
Lógicamente as rotinas não são todas de autorias deles, mas vendem hoje por R$ 119,00, acho um absurdo ficar copiando macros disponibilizadas gratuitamente e depois revenderem, mas fazer o que.

Quanto a questão da linguagem eu concordo com o Ingles, que queira ou não ainda é a linguagem universal mais utilizada, para se ter uma ideia eu tenho até hoje meu primeiro livro referente a introdução de macros que é da Microsoft e todo em portugues do Brasil, até as macros de exemplo, "Guia do Usuário do Visual Basic - Microsoft Excel Versão 5.0", lembro-me que na época o Excel aceitava e executava a rotina conforme estava no livro, por exemplo:

Proc FecharTodasPastasTrabalho()
    
    'Pasta é uma variável que se refere a elementos da coleção PastasTrabalho.
    Para Cada Pasta em PastasTrabalho()
        Pasta.Fechar
    Próx Pasta
    
Fim Proc

Depois não me lembro mais a partir de qual versão os Proc ficaram tudo em Ingles, dai não teve jeito, para ingressar no mundo da informática e programação tem de se saber um minimo de Ingles, isto não é só sobre o VBA é praticamente tudo, como na época eu fazia manutenção de PCs fui forçado a ter umas aulas de ingles, pois tudo era Ingles, hoje já bem menos, mas ainda continua o predominio da linguagem em qualquer programação, e pelo menos para mim, com a evolução da internet mais rápida e os tradutores on line, tudo ficou mais fácil.

Vou procurar policiar meu tempo e ver se consigo contribuir com algumas idéis, mas desde já, por mim o projeto está aprovado.

[]s

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

 
Postado : 29/07/2014 8:07 pm
(@edcronos)
Posts: 1006
Noble Member
 

Eu só faria diferente uma coisa, colocaria tudo num mesmo arquivo, devidamente categorizadas,

nem todo mundo vai precisar de tudo, o importante para mim é a capacidade da macro ser adaptada, ou simplesmente o uso da ideia.
claro que estou longe de fazer algo realmente útil em varia situações diferentes

Não economize no nome de variável. Use nomes que façam sentido.

só que eu me enrolo com nomes grandes por mais sentido que eles façam.

Aqueles nomes de variáveis da ClonarArray() são complicados. Precisei ler umas 10 vezes o código para entender do que se tratam

para mim é pior quando vejo macro com nomes de variáveis grandes.
eu escolho nomes de variaveis por associação
L inha i nicial C oluna F inal Q uantidade T otal V alor O rigem D estino QLO, Ci, Li, Cf, Lf, LiO, Cfd, Vi, Vf

quando é para macro fechadas sem uso de variaveis publicas aí sim são nomes malucos...

Bem, acho que cada um tem o estilo que se adapta melhor...

Ps. Não lembro desse ClonarArray,
eu fiz um clonar-ranger para um usuario do forum.
que usava event Change para copiar valores de duas ranges diferentes entre si.

----------------------------------------------------------------------------------------------------------------------------------------
Mauro Coutinho
Quanto a questão da linguagem eu concordo com o Ingles, que queira ou não ainda é a linguagem universal mais utilizada

Mauro ,para os comandos e funções sim é o básico nem tem outro jeito
mas nomes de variáveis e de subs,
só mesmo quem domina muito bem o ingles que vai usufruir totalmente do projeto
os que não dominam e que são a maioria vai aproveitar nada,

e no caso são duas linguagens para se aprender o vba e o ingles.
"o vba é em ingles (sim), mas a sintaxe é diferente"

mesmo os fluentes vão se chocar com termos técnicos estranhos
e em vez de arrumarem soluções, vão se deparar c com novas questões para resolver e poder solucionar seus problemas.

eita, escrevi um livro...

até

Somente é impossíveis até que alguém faça
A logica está presa na irracionalidade humana, e morta nos que se consideram donos da verdade.

"ALGUM MODERADOR ME EXPULSE DO FÓRUM POR FAVOR"

 
Postado : 29/07/2014 8:51 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Falando em linguagem, eu acho interessante usar o inglês pela facilidade da língua ser sem acentos, "ç" etc., pois já tive problemas com planilhas que deram como arquivo corrompido e, curiosamente, somente esses caracteres estavam corrompidos. Depois disso, passei, a utilizar o máximo do inglês nos códigos.

Porém, as vezes utilizo portugues porque eu sei que não vai ter perigo de escrever um comando sem querer, rs.

Em todo caso, posso ajudar a traduzir as rotinas para o português, se o Fernando quiser.

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 29/07/2014 9:19 pm
Página 1 / 3