Notifications
Clear all

Erro de macro

4 Posts
3 Usuários
0 Reactions
768 Visualizações
(@vithelan)
Posts: 1
New Member
Topic starter
 

Pessoal, boa noite!
Estou tentando criar minha primeira macro. O que devo fazer para evitar o erro do arquivo em anexo que recebo ?
Obrigada
Heloisa

 
Postado : 19/06/2016 6:47 pm
(@osvaldomp)
Posts: 857
Prominent Member
 

Public Declare Function >> altere para >> Public Declare PtrSafe Function

Private Declare Function >> altere para >> Private Declare PtrSafe Function

Osvaldo

 
Postado : 19/06/2016 7:08 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Boa noite, Heloísa, seja bem vinda.

Seria interessante vc anexar sua pasta de trabalho para analisarmos ou copiar o código que vc está criando.

Mas estou achando estranho esse erro estar acontecendo na criação de sua primeira macro, pq esse erro ocorre quando se está declarando acesso às funções ou procedimentos do Windows, as API's, etapa que eu diria ser bem mais sofisticada no aprendizado de programação, não é nada básico. Se vc está se aventurando por esse caminho, talvez fosse melhor repensar a estratégia.

Mas vamos à possível causa do erro: as API's do Windows, apesar de a maioria terem o mesmo nome, requerem que em sua declaração sejam usadas algumas palavras-chave específicas, caso o sistema operacional seja 64 bits. Uma dessas palavras-chave é PtrSafe. Outra é LongPtr.

Então provavelmente vc tenha aberto em seu PC com Windows 64bits algum arquivo com macro um pouco mais "antiga".

Geralmente é só inserir a palavra-chave PtrSafe entre Declare e Function. Exemplo de uma declaração:

64 bits:
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As LongPtr, ByVal nIndex As Long) As Long

32 bits:
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long

 
Postado : 19/06/2016 7:30 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Desculpe aí, Osvaldo, só depois de que enviei a resposta é que vi que vc já tinha respondido.

 
Postado : 19/06/2016 7:31 pm