Vídeo recomendado
https://youtu.be/diWPPPhW-9E

Como fazer a conexão do banco de dados access 32 bits no excel 64bits.

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

CkOliveira
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Qui Ago 10, 2017 2:22 pm

Como fazer a conexão do banco de dados access 32 bits no excel 64bits.

Mensagem por CkOliveira »

Pessoal estou com um problema aqui na empresa, tenho algumas aplicações em VBA, que sempre rodaram nas máquinas com Excel 32 bits, agora com a chegada de novas máquinas em 64bits essas aplicações não rodam mais, alguém tem alguma ideia de como resolver isso?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Guima
Consultor
Consultor
Mensagens: 242
Registrado em: Sex Out 30, 2009 6:10 am

Re: Como fazer a conexão do banco de dados access 32 bits no excel 64bits.

Mensagem por Guima »

Ola CK, em geral a conexão seria a mesma, tanto para 32 ou 64 bits.

Acredito que o problema deva ser outro. Em geral, acontecem problemas com os controles ActiveX em 64 bits, e alguns outros menores. Mas qual mensagem aparece neste arquivo quando aberto em Excel 64 bits?


miranda.flavio
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Sex Jul 16, 2010 11:08 pm

Re: Como fazer a conexão do banco de dados access 32 bits no excel 64bits.

Mensagem por miranda.flavio »

Na verdade o que é preciso verificar são as Declarações de API´s para versões do MS Office.
Ou seja, é necessário definir se a execução está sendo realizada em plataforma 64 bits ou 32 bits e para isso deve´se criar instrução para tratar e identificar a plataforma e definir as variáveis de ponteiros para as instruções Declare.

fonte: https://msdn.microsoft.com/pt-br/VBA/La ... -statement
Instrução Declare
As instruções Declare com a palavra-chave PtrSafe é a sintaxe recomendada. As instruções Declare que incluem PtrSafe só funcionarão corretamente no ambiente de desenvolvimento do VBA7 nas plataformas 32 bits e de 64 bits depois que todos os tipos de dados na instrução Declare (parâmetros e valores de retorno) que precisam armazenar quantidades de 64 bits forem atualizados para usar LongLong para integrais de 64 bits ou LongPtr para ponteiros e manipulações. Para garantir a compatibilidade com versões anteriores com o VBA, a versão 6 e anteriores usam a seguinte construção:
#If Vba7 Then
Declare PtrSafe Sub...
#Else
Declare Sub...
#EndIf

segue abaixo uma solução para as diferentes plataformas 32 e 64 bits
Lembrando que em todas as rotinas com as constantes Declare deverá ter sua estrutura alterada para identificação das diferentes plataformas 32 e 64 bits
==============================================================
Option Explicit
'http://www.tudosobrexcel.com/vba/vba_32bits/
'http://www.tudosobrexcel.com/vba/vba_32 ... trSafe.TXT

'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 'Declaração para as versões 32 bits.
' Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
' (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'#Else
' Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
' (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'#End If

#If VBA7 Then
'O código está sendo executado no novo editor VBA7
#If Win64 Then
' O código está sendo executado na versão de 64 bits do Microsoft Office
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As LongLong, ByVal lpOperation As String, ByVal lpFile As String, ByVal _
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongLong) As _
LongLong
#Else 'Declaração para as versões 32 bits.
'O código está sendo executado na versão de 32 bits do Microsoft Office
Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal _
lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As LongPtr) As _
LongPtr
#End If
#End If
'#If VBA6 Then 'Declaração de API´s para versões do MS Office 2007-.
' Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
' (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
'#End If


Espero ter ajudado,
Abraços
Flávio Miranda


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder