Quem aí se recorda do AC/DC? A banda, que foi eleita em recente simpósio em Oslo a 47º maravilha do hard rock australiano, retorna triunfalmente com um novo disco. Para promover as novas aventuras em hi-fi, os vovôs tiveram uma idéia bem prafrentex: um videoclipe que roda no Excel!
Se o Rock errou, como dizia o Lobão, numa planilha do Excel ele tem bem menos chances de não acertar, graças ao apuro matemático do belo programa.
Baixe aqui o que está sendo alardeado como “o primeiro vídeo musical feito numa planilha de Excel”.
Claro que pedimos para o Humberto, nosso Programador Parrudo de plantão, uma explicação sobre como diabos foi possível fazer um clipe tão radical dentro de uma planilha de Excel. Confira.

Os recursos utilizados para essa inusitada apresentação de vídeo partem de uma técnica que falamos no post Cenários: Ócio com Animação.
O vídeo é transformado em arte ASCII, que transforma imagens em caracteres. Evidente que no caso do AC/DC a coisa foi bem mais elaborada. Portanto, para os já iniciados em VBA, seguem algumas explicações.
Os caracteres foram todos colocados na coluna Q da planilha do acdc.xls, a partir da linha 100. Por meio de macros, esses dados são lidos, linha a linha, em uma velocidade estabelecida com ajuda da instrução DoEvents e da função Timer.
A função DoEvents tem um objetivo muito simples: funcionar sem paralisar as funções do Excel e do Windows. Colocada dentro de um Loop, a função DoEvents é executada repetidas vezes até que o Loop termine. Desta forma, enquanto o Loop estiver executando a função DoEvents a macro permanece como se estivesse “pausada”.
Para determinar o fim do Loop, a função Timer é utilizada. Ela retorna a quantidade de segundos desde a meia-noite, e também pode ser usada para marcar um tempo. Se você colocar o resultado da função Timer em uma variável (inicio = Timer) e, um segundo depois, você armazenar novamente a função Timer em outra variável ( fim = Timer), a diferença entre as duas variáveis será exatamente um segundo.
O código usado para determinar uma velocidade de 12 frames por segundo foi este:
Start = Timer ‘coloca um tempo, em segundos, na variável Start
Delay = Start + 0.083 'coloca na variável Delay aqueles segundos da variável Start mais 0.083 segundos. Isso dá uma velocidade de 12 frames por segundos.
Do While Timer < Delay ‘Executa o Loop, enquanto o número de segundos atuais (Timer) forem menores que o Delay.
DoEvents ‘Executa o DoEvents, que na verdade não faz nada: apenas não mantém as demais funções do Excel e do Windows ocupadas enquanto o Loop é executado
Loop
Para quem não está muito habituado com programação, esses conceitos parecem abstratos demais.
Para ajudar no entendimento, é só imaginar que um Loop é executado muito, mas muito rápido mesmo. Bem mais rápido que 0.083 segundos!
Um abraço e até o próximo mistério do Humberto Desvenda!