TOPOGRAFIA – CRIANDO FUNÇÕES EM VISUAL BASIC PARA TRANSFORMAÇÕES DE GRAUS SEXAGESIMAIS NO EXCEL

Autor: Prof. Dr. Paulo Sergio Oliveira de Carvalho (Fevereiro de 2013)

Introdução

 O Visual Basic (abreviado como VB) é uma linguagem de programação produzida pela empresa Microsoft, e é parte integrante do pacote Microsoft Visual Studio. Sua versão mais recente faz parte do pacote Visual Studio .NET, voltada para aplicações .Net. Sua versão anterior fez parte do Microsoft Visual Studio 6.0, ainda muito utilizado atualmente por aplicações legadas. (texto retirado do site: http://pt.wikipedia.org/wiki/Visual_Basic (consultado em: 16/02/2013).

No pacote Microsoft Office, esta linguagem de programação pode ser utilizada para criar funções e manipular arquivos, sobretudo no Excel, que potencializa as possibilidades da programação de planilhas, possibilitando a elaboração de campos calculados mais complexos.

O Excel trabalha com vários tipos de arquivos, dentre eles o de extensão (.xlsm), que são arquivos capazes de incorporar, num segundo plano, funções escritas em Visual Basic e executá-las em células de qualquer planilha de um arquivo no software Excel.

Por padrão, o Excel não habilita as funções para executar macros, por motivos de segurança. Arquivos de terceiros podem vir com códigos maliciosos indesejados. Por isso, para habilitar a execução deste tipo de arquivo o usuário deverá realizar algumas configurações que se encontram na “Central de confiabilidade” do programa. (Obs.: o tutorial apresentado a seguir foi baseado na versão 2010 do Microsoft Office)

Configurações para Ativar a Execução de Macros no Excel
Fig_01 - Topografia - Notas de Aula - Visual Basic

 Iniciar o software Excel e escolher a guia “Arquivo” e em seguida clicar em “Opções” no menu apresentado (ver Figura 1).

Será aberta uma nova janela onde será possível visualizar no menu oferecido à esquerda a opção “Central de Confiabilidade” (ver Figura 2). Clicar para escolher esta opção para exibir do lado direito às configurações disponibilizadas. Em seguida, clicar no botão “Configurações da Central de Confiabilidade…”.

Será apresentada uma nova janela de configurações (ver Figura 3). Clicar na opção “Configurações de Macro” para exibir as seguintes opções de configurações que deverão ser marcadas:

Fig_02
Figura 1 – Menu da Guia “Arquivo” do Excel[/ezcol_2third_end]

Fig_02 - Topografia - Notas de Aula - Visual Basic
Topografia – Notas de Aula – Visual Basic

Figura 2 – Janela Opções do Excel

Fig_03 - Topografia - Notas de Aula - Visual Basic
Topografia – Notas de Aula – Visual Basic

Figura 3 – Janela Central de Confiabilidade

Considerações

Em Topografia a manipulação de ângulos é uma prática corrente que exige certo conhecimento básico para que erros grosseiros nas transformações, somas e subtrações não sejam cometidos, comprometendo os valores advindos do campo e manipulados no escritório.

O tipo de grau utilizado nos levantamentos topográficos é o sexagesimal. A mecânica de transformação angular, na modalidade sexagesimal, corresponde aos mesmos cálculos utilizados para manipulação das horas. Para facilitar o cálculo em planilhas, normalmente, recorre-se a transformação do valor angular que normalmente é expresso na sua forma longa, ou seja: graus (°), minutos (‘) e segundos (“).

Para o procedimento do cálculo angular se faz necessário transformar o ângulo da forma longa para a forma reduzida, ou seja, apenas em graus. Neste formato são realizados todos os cálculos e operações necessárias. Ao final para apresentação do resultado haverá a transformação inversa: da forma reduzida para a forma longa. Estas transformações podem ser realizadas diretamente numa planilha do Excel ou de uma maneira mais simples, prática e produtiva, através da construção de duas funções para realizarem as tarefas de conversão.

A princípio, o usuário pode ter a ideia de que calcular diretamente na planilha seria o método mais fácil, entretanto, após a apresentação desta nova forma de resolver estas transformações, o usuário será seduzido pela facilidade de utilização e das possibilidades que ele terá para criar outras funções para resolver outros cálculos em planilhas, por mais complexos que eles sejam utilizando este poderoso recurso.

Consultando a internet (http://support.microsoft.com/kb/213449/pt-br Consultado em: 16/02/2013), a Microsoft disponibilizou códigos de duas funções em Visual Basic para elaboração das tarefas de transformação, são elas: Convert_Degree e Convert_Decimal. Analisando o comportamento e funcionamento das funções, o presente autor descobriu algumas falhas e limitações destas. Face ao exposto, baseado nos códigos apresentados, elaborou novas programações de melhor entendimento e com correição para validação dos seus funcionamentos.

Programando em Visual Basic

Para iniciar uma programação em Visual Basic (VB) no Excel deve-se proceder da seguinte forma:

  1. Iniciar o programa Excel;
  2. Pressionar a combinação de teclas Alt+F11 para iniciar o editor (VB);
  3. Na barra de menu clique em “Inserir” e no menu apresentado escolha a opção “Módulo” (ver Figura 4);
  4. Dentro da área de programação da “Pasta1 – Módulo1 (Código)” apresentada, digitar o código desejado;
  5. Pressione novamente a combinação de teclas Alt+F11 para voltar para a planilha.

Obs.: na guia “Exibição” as macros também podem ser acessadas no ícone

Fig_04 - Topografia - Notas de Aula - Visual Basic
Topografia – Notas de Aula – Visual Basic

Figura 4 – Inserindo um Módulo de Programação no Microsoft Visual Basic

Função para Transformar Graus da Forma Longa para a Forma Reduzida (Convert_Decimal)

Digitar as linhas do código a seguir no módulo de programação VB (ver Figura 5):Function Convert_Decimal(Degree_Deg) As Variant
‘Extrai o valor dos graus
degrees = Mid(Degree_Deg, 1, 3)
‘Extrai o valor dos Minutos
minutes = Mid(Degree_Deg, 5, 2)
‘Extrai o valor dos Segundos
seconds = Mid(Degree_Deg, 8, 2)
‘Transformando o valor dos Segundos em Minutos
minutes = minutes + seconds / 60
‘Transformando o valor dos Minutos em Graus
degrees = degrees + minutes / 60
‘Exibindo o valor final em Graus
Convert_Decimal = degrees
End Function
Sub Decimal_Forma_Long()
End Sub

Fig_05 - Topografia - Notas de Aula - Visual Basic
Topografia – Notas de Aula – Visual Basic

Figura 5 – Código da Função Convert_Decimal no Módulo de Programação VB

Após a configuração do código disponibilizado, digitar a combinação de teclas Alt+F11 para retornar para a planilha Excel. A seguir será explicado o passo a passo para utilização da função:

  1. Na célula A1 da planilha Excel digite o ângulo 010d06’36”
  2. Na célula A2 digite: “=Convert_Decimal(A1)” …sem as aspas!
  3. Deverá ser apresentado na célula A2 o seguinte: 10,11

Importante: a notação utilizada para graus “d“ oriunda da palavra em inglês “degree” que significa graus é para utilizar a mesma sintaxe utilizada pelo programa Autocad para entrada de ângulos na forma longa.

 Função para Transformar Graus da Forma Reduzida para a Forma Longa (Convert_Degree)

Digitar as linhas do código a seguir no módulo de programação VB (ver Figura 6):

Function Convert_Degree(Decimal_Deg) As Variant
With Application
‘Extraindo a parte inteira do ângulo
degrees = Int(Decimal_Deg)
If degrees < 10 Then degrees = “00” & degrees
If degrees >= 10 And degrees < 100 Then degrees = “0” & degrees
‘Transformando a parte decimal em minutos
minutes = (Decimal_Deg – degrees) * 60
‘Separando a parte inteira dos Minutos
parte_inteira = Int(minutes)
‘Separando a parte fracionada dos Minutos
parte_fracionada = minutes – parte_inteira
‘Se parte fracionada próxima limite superior
If parte_fracionada >= 0.99 Then
‘Arredonda os Minutos e zera a parte fracionada
minutes = Round(minutes)
parte_fracionada = 0
End If
‘Se parte fracionada próxima do limite inferior
‘considerar apenas a parte inteira dos Minutos
If parte_fracionada <= 0.01 Then minutes = Int(minutes)
minutes = Int(minutes)
If minutes < 10 Then minutes = “0” & minutes
‘Transformando a parte decimal em segundos
seconds = parte_fracionada * 60
seconds = Int(Round(seconds))
If seconds < 10 Then seconds = “0” & seconds
‘Exibindo o resultado
simbolo_seconds = Chr(34)
Convert_Degree = degrees & “d” & minutes & “‘” & seconds & simbolo_seconds
End With
End Function
Sub Forma_Long_Decimal()End Sub

Fig_06 - Topografia - Notas de Aula - Visual Basic
Topografia – Notas de Aula – Visual Basic

Figura 6 – Código da Função Convert_Degree no Módulo de Programação VB

Após a configuração do código disponibilizado, digitar a combinação de teclas Alt+F11 para retornar para a planilha Excel. A seguir será explicado o passo a passo para utilização da função:

  1. Na célula A2 da planilha Excel digite o ângulo 10,11 (ou deixe o valor preenchido pela função anterior)
  2. Na célula A3 digite: “=Convert_Degree(A2)” …sem as aspas!
  3. Deverá ser apresentado na célula A3 o seguinte: 010d06’36”

Importante: após a realização das configurações, salve o arquivo escolhendo o Tipo: “Pasta de Trabalho Habilitada para Macro do Excel (*.xlsm).

[ Topo da Página ] [ Início ]