Alguma Dúvida Sobre os Cursos ? Fale Com o Autor Indique Este Site   Fórum de Discussão

EXCEL LENCIA

Tudo Sobre Excel
Soluções em Excel e VBA Excel é uma marca registrada de Microsoft® Corporation.

VBA 64 BITS (EXCEL 2010)


O Microsoft Excel 2010, o VBA (Visual Basic for Applications),  trouxe recursos de linguagem  para  ambientes de 32 bits e 64 bits. Por padrão, o Office 2010 instala a versão de 32 bits, mas você pode escolher  para instalar a versão de 64 bits.

Se você instalar a versão 64 Bits e executar macros criadas até o Excel 2007 com certeza ocorrerá erro, porque até a versão 2007 só existia plataforma de 32 Bits.

Esse erros só ocorrerão em aplicativos que utilizarem as Blibliotecas APIS.

Se você optar em instalar o Excel de 64 bits e for utilizar algum aplicativo ou planilha de nosso portal , e essa planilha recorrer às APIS, elas podem não funcionar, pois precisará ser feito as adaptações e isso requererá algum tempo!

 

 


A Microsoft inseriu novas bibliotecas nas APIS:

Tipo LongPtr

O tipo de dados real que LongPtr resolve depende da versão do Office que está sendo executado . LongPtr resolve Long em 32-bit versões do Office e LongPtr resolve LONGLONG em versões de 64 bits do Office. Use LongPtr para ponteiros e alças.

 

Tipo LONGLONG

O tipo de dados LONGLONG é um inteiro assinado de 64 bits que só está disponível em versões de 64 bits do Office. Use LONGLONG para integrais de 64 bits. As funções de conversão deve ser usado para atribuir explicitamente LONGLONG (incluindo LongPtr em plataformas de 64 bits) para menores tipos integrais. As conversões implícitas de LONGLONG integrais para menores não são permitidos.

 

Tipo  PtrSafe

A palavra-chave PtrSafe afirma que uma instrução Declare é seguro para ser executado em versões de 64 bits do Office.

Todas as instruções de declaração têm agora de incluir a palavra-chave PtrSafe quando rodando em 64-bit versões do Office. É importante entender que simplesmente adicionar a palavra-chave PtrSafe a uma instrução Declare significa apenas a instrução Declare explicitamente metas de 64 bits, todos os tipos de dados dentro da declaração de que precisa para armazenar 64 bits (incluindo os valores de retorno e parâmetros) ainda deve ser modificado para manter as quantidades de 64 bits.

Instruções Declare com a palavra-chave PtrSafe é a sintaxe recomendada. Instruções Declare que incluem PtrSafe funcionar corretamente no ambiente de desenvolvimento VBA7 tanto em 32 bits e plataformas de 64 bits. Para garantir a compatibilidade em VBA7 e anteriores usar a seguinte construção:

#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf

 

Considere os exemplos a seguinte instrução Declare. Executando a instrução Declare não modificado em versões de 64 bits do Office irá resultar em um erro indicando a instrução Declare não inclui o qualificador PtrSafe. A modificação exemplo VBA contém o qualificador PtrSafe, mas note que o valor de retorno (um ponteiro para a janela ativa) retorna um tipo de dados Long. No Office 64 bits, isso é incorreto, porque o ponteiro precisa ser 64-bits. O qualificador PtrSafe informa o compilador a instrução Declare é alvo de 64-bits, de modo a declaração do executado sem erros. Mas porque o valor de retorno não foi atualizado para um tipo de dados de 64 bits, o valor de retorno é truncado, resultando em um valor incorreto retornado.


Exemplo de instrução Declare:

Declare Function GetActiveWindow Lib "user32" () As Long


VBA exemplo de instrução Declare modificado para incluir o qualificador PtrSafe mas ainda usando um valor de retorno de 32 bits:

Declare PtrSafe Function GetActiveWindow Lib "user32" () As Long

 

Para reiterar, é necessário modificar a instrução Declare para incluir o qualificador PtrSafe e você deve atualizar todas as variáveis dentro da afirmação de que precisa para manter as quantidades de 64 bits para que as variáveis usam tipos de dados de 64 bits.

VBA exemplo de instrução Declare modificado para incluir a palavra-chave PtrSafe e atualizadas para o uso adequado de 64 bits (LongPtr) Tipo de dados:

Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr

Em resumo, para o código para trabalhar em versões de 64 bits do Office, você precisa localizar e modificar todas as instruções existentes Declare usar o qualificador PtrSafe. E você precisa localizar e modificar todos os tipos de dados dentro destas instruções Declare que fazem referência a alças ou ponteiros para usar o novo alias de 64 bits compatíveis com o tipo LongPtr, e tipos que precisa segurar integrais de 64 bits com o novo tipo de dados LONGLONG. Além disso, você deve atualizar quaisquer tipos definidos pelo usuário (UDTs) que contêm ponteiros ou os punhos, e integrais de 64 bits para usar tipos de dados 64-bit e verificar todas as atribuições de variáveis estão corretas para evitar erros de incompatibilidade de tipo.


Escrever código que funciona tanto em 32 bits e 64 bits do Excel:

Para escrever código que pode porta entre os dois de 32 bits e 64-bit versões do Office que você só precisa usar o novo tipo de alias LongPtr vez de Longo ou LONGLONG para todos os ponteiros e manipular valores. O alias tipo LongPtr vai resolver para o longo ou o tipo correto de dados LONGLONG dependendo de qual versão do Office está em execução. Note que se você precisar de outra lógica para executar, por exemplo, que você precisa para manipular valores de 64 bits em grandes projetos do Microsoft Excel que você pode usar a compilação condicional Win64 constante, como mostrado na seção seguinte.

Para escrever código que pode trabalhar tanto em versões novas e antigas do Office que você pode usar uma combinação dos VBA7 novo e Win64 condicional Compiler Constantes. O compilador Vba7 condicional constante é usada para determinar se o código está sendo executado na versão 7 do editor de VB (VBA a versão que vem no Office 2010). A compilação condicional Win64 constante é usada para determinar qual versão (32 bits ou 64 bits) do Office está em execução:

#if Vba7 then
'  Code is running in the new VBA7 editor
     #if Win64 then
     '  Code is running in 64-bit version of Microsoft Office
     #else
     '  Code is running in 32-bit version of Microsoft Office
     #end if
#else
' Code is running in VBA version 6 or earlier
#end if



#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf

Resumo das atualizações de linguagem VBA7 :

Name Type Description
PtrSafe Keyword Afirma que uma instrução Declare é direcionada para sistemas de 64 bits. Requerido em 64-bits. .
LongPtr Data type Alias tipo que mapeia a Long em sistemas de 32 bits, ou LONGLONG em sistemas de 64 bits.
LongLong Data type 8 Tipo de byte de dados que está disponível apenas em sistemas 64bit. Tipo numérico. Números inteiros na faixa de -9.223.372.036.854.775.808 para 9,223,372,036,854,775,807. LONGLONG é um tipo declarado válido apenas em plataformas de 64 bits. Além disso, LONGLONG não pode ser implicitamente convertido para um tipo menor (por exemplo, não é possível atribuir um LONGLONG para um Long.). Isso é feito para impedir o truncamento ponteiro inadvertida. Coações explícitas são permitidos, assim, no exemplo acima, você pode aplicar a um CLng LONGLONG e atribuir o resultado de um longo tempo. (Válido em plataformas de 64 bits.)
^ LongLong type-declaration character Explicitamente declara um valor literal como LONGLONG. Obrigada a declarar uma LONGLONG literal que é maior que o valor máximo de longa duração (caso contrário, terá implicitamente convertido para duas pessoas).
CLngPtr type conversion function Converte uma expressão simples para um LongPtr.
CLngLng type conversion function Converte uma expressão simples de um tipo de dados LONGLONG. (Válido em plataformas de 64 bits.)
vbLongLong VarType constant VarType constant.
DefLngPtr DefType statement Define o tipo de dados padrão para uma série de variáveis como LongPtr.
DefLngLng DefType statement Define o tipo de dados padrão para

Disponibilizamos um arquivo com as novas bibliotecas para você fazer as adaptações em suas planilhas! Clique aqui e baixe!

 

 







ÁREA DE ASSINANTES

Esta área é reservada aos assinantes do portal Tudo Sobre Excel

Clique Aqui é Acesse o Módulo 2004

Clique Aqui e Acesse os Módulo 2005

Clique Aqui e Acesse os Módulo 2006

Clique Aqui e Acesse os Módulo 2007

Clique Aqui e Acesse os Módulo 2008

Clique Aqui e Acesse os Módulo 2009

Clique Aqui e Acesse os Módulo 2010

Clique Aqui e Acesse os Módulo 2011

ESTATÍSTICA

Nº DE ACESSOS DE Jan/2003 até hoje: 

Visite nosso site!

Anunciantes e Investidores Acreditem em Nós


Tudo Sobre Excel e o TOP 30

 

Estamos Participando do Concurso de Home Page Top 30. Seu voto diário é sempre bem vindo.


CLIQUE AQUI PARA CONSULTA VIA MESSENGER!
Se preferir você pode comprar via MSN:

vendas_boletins_excellencia@hotmail.com

HIT Nº

 HIT Nº  HIT Nº

© 2003/2011 tudosobrexcel.com. Todos os direitos reservados a Excelution Soluções em VBA.