Notifications
Clear all

Excel VBA funcionando em sistema x32 e x64

7 Posts
4 Usuários
0 Reactions
2,217 Visualizações
(@alan18ti)
Posts: 6
Active Member
Topic starter
 

Olá,boa noite.

Estou com uma grande dúvida. Vi em outros locais algo relacionado, porém tudo muito antigo - 2011, 2012, e ao fazer o que se fala, não dá certo.

Ocorre que fiz um programa em Excel VBA no meu notebook, que roda o excel para 32bit e quando fui rodar ele no computador do meu trabalho (que era a intenção do programa), vi que lá era 64bit. E sempre rodo o programa, ele acaba dando erro. Primeiro erro foi que ele não conseguia resolver problema de módulo seguro. Daí, tirei a segurança do código. Depois deu erro de variável para todas as minhas variáveis de FOR EACH e FOR. Daí, declarei as variáveis destas instruções. Agora, ele invocou que a função nativa DATE (que retorna a data atual) é uma variável e precisa ser declarada. Porém, não tem nem como declarar, pois é uma palavra reservada. Sendo assim, estou sem saber mais o que fazer.
Já vi algumas instruções em que se coloca um código e modifica os tipos LONG para LONGPTR, ou algo do tipo.
Alguém já passou por esse problema e conseguiu resolver? Se sim, serei eternamente grato se me ajudassem com isso. O programa tá ajudando MUITO no trabalho, mas to tendo que escravizar meu note lá por enquanto. :(

Agradeço desde já a todos os colegas e me coloco à disposição no que puder ajudar tb.

Alan

 
Postado : 05/07/2017 5:49 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

alan18ti,

Bom dia!

Cara, entendo o seu problema. Muito chato isso! Esses problemas de incompatibilidade sempre ocorrem entre versões diferentes, tanto do próprio Excel como também de sistema operacional de 32 bits para 64 bits. A maioria das dlls, ocs's, etc n~]ao funcionam.

Não sei se isso tem uma solução rápida. Aguardemos que nossos colegas mais experientes do fórum se pronunciem sobre o assunto. Penso que uma solução radical (mas necessária se o programa é tão importante para o seu trabalho) seria a de refazer, do zero, o mesmo programa no sistema operacional e excel do seu trabalho.

Outra coisa interessante é você descaracterizar dados confidenciais do seu arquivo e anexar o mesmo aqui no fórum, compactado com .ZIP, para que todos possam baixar, rodar, depurar e vê se encontram soluções.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/07/2017 5:05 am
brunoxro
(@brunoxro)
Posts: 698
Honorable Member
 

Boa tarde,

Dê uma lida, talvez ajude: https://msdn.microsoft.com/library/gg264421.aspx

att,

 
Postado : 06/07/2017 12:02 pm
(@alan18ti)
Posts: 6
Active Member
Topic starter
 

Penso que uma solução radical (mas necessária se o programa é tão importante para o seu trabalho) seria a de refazer, do zero, o mesmo programa no sistema operacional e excel do seu trabalho.

Obrigado Wagner. Na verdade, já pensei nisso, porém eu tenho uma dúvida que creio você possa me ajudar.
A sintaxe do VBA Versão x64 é diferente da que eu programei no x32, não é isso? Existe alguma documentação sobre a sintaxe, como existe para HTML, CSS, PHP, dentre outros?

Sinto falta disso. Eu estou completamente habituado com a sintaxe do VBA, porém me parece que a sintaxe é substancialmente diferente. E ai, até pegar essa sintaxe toda, é osso.. vai ser uma chuva de erros.

Mas vou tentar. É o jeito.

Obrigado.

 
Postado : 06/07/2017 1:57 pm
(@alan18ti)
Posts: 6
Active Member
Topic starter
 

Boa tarde,

Dê uma lida, talvez ajude: https://msdn.microsoft.com/library/gg264421.aspx

att,

Fala, brunoxro, obrigado.

Então, já li essa página. Existem outras também na mesma linha de raciocínio.

Aproveitando, queria tirar algumas dúvidas contigo, se tiver ao seu alcance. Nesta página tem uma parte que ele pede que coloquemos:

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

E ai eu fico na dúvida. Esse "#" faz parte mesmo do código, em x64? Os IFs e os demais laços de repetição e condicionais têm que colocar o "#" antes?
Acho que minha maior dúvida é quanto a sintaxe, para que eu possa codificar um na versão x64. To meio perdido quanto a isso.

Tem um tempinho que programo em VBA, mas nunca tive problema com isso porque nunca rodei meus programas num x64. Sempre era no meu note e no do trabalho de minha esposa, que são x32. Então, nunca me atentei para o VBA7 e tal..

 
Postado : 06/07/2017 2:02 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

Você já usou o help do VBA de 64 bits? Desculpe mas não entendo nada de programação em 64 bits.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 06/07/2017 3:48 pm
felipemazz
(@felipemazz)
Posts: 59
Trusted Member
 

Boa tarde,

Dê uma lida, talvez ajude: https://msdn.microsoft.com/library/gg264421.aspx

att,

Fala, brunoxro, obrigado.

Então, já li essa página. Existem outras também na mesma linha de raciocínio.

Aproveitando, queria tirar algumas dúvidas contigo, se tiver ao seu alcance. Nesta página tem uma parte que ele pede que coloquemos:

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

E ai eu fico na dúvida. Esse "#" faz parte mesmo do código, em x64? Os IFs e os demais laços de repetição e condicionais têm que colocar o "#" antes?
Acho que minha maior dúvida é quanto a sintaxe, para que eu possa codificar um na versão x64. To meio perdido quanto a isso.

Tem um tempinho que programo em VBA, mas nunca tive problema com isso porque nunca rodei meus programas num x64. Sempre era no meu note e no do trabalho de minha esposa, que são x32. Então, nunca me atentei para o VBA7 e tal..

Amigo, desculpe a falta de informações completa, mas para te ajudar...
Eu precisei fazer umas adaptações destas em um programa que fiz para minha irmã, e quando li sobre tal, diziam que era uma CONDIÇÃO DIRETIVA (algo assim).
Ou seja, dentro destes if's (pelo que entendi), você vai declarar os tipos de sistema ou de programação que está trabalhando.

Um texto que me ajudou muito na época, foi este da microsoft:

https://msdn.microsoft.com/en-us/library/ee691831(loband).aspx#odc_office2010_Compatibility32bit64bit_IntroducingVBA7CodeBase

Apesar de estar em inglês, ele explica sobre as compatibilidades, e como utilizar o #if/#else/#endif

Espero que resolva!

 
Postado : 07/07/2017 9:48 am