Condividi:        

Office 2016 problemi compatibilità Private Declare Function

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Office 2016 problemi compatibilità Private Declare Function

Postdi deniel69 » 09/03/18 19:05

Buona sera a tutti.

Chiedo aiuto per un problema di compatibilità di codice.

la stringa
Codice: Seleziona tutto
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _


Mi crea problemi se apro il il file excel con office 2016, mentre se lo apro con versioni precedenti
non ho problemi.

Come posso modificare il codice in modo da poter far funzionare le macro in base alla versione di office?

Grazie a tutti anticipatamente :( :(
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi PcBase » 09/03/18 23:05

Ciao

Non hai allegato un codice completo
Guarda il COLLEGAMENTO http://www.jkp-ads.com/articles/apideclarations.asp
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi deniel69 » 10/03/18 11:41

Il problema è il "Private Declare Function" che non viene riconosciuto da excel 2016 mentre in versioni inferiori
non c'è problema!

O meglio se non ho capito male il problema non è la versione di excel ma il fatto che sia la versione a 32 bit o la versione a 64
per i 64 bit la forma corretta è "PrtSafe" ed io vorrei magari creando un controllo if per poter aprire il mio foglio con macro
senza problemi in entrambi i casi.......

Grazie!
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi PcBase » 10/03/18 22:37

Ciao
Infatti: devi solo creare un controllo if per poter aprire il mio foglio con macro
senza problemi in entrambi i casi


Se non riesci devi almeno postare i codici che utilizzano Api di windows
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi Anthony47 » 11/03/18 01:11

Beh, se non c'e' riuscito la prima volta...

E' spiegato nell'articolo:
Since the 64 bit declarations also work on 32 bit Office 2010, all you have to test for is VBA7:
#If VBA7 Then
Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As LongPtr, ByVal nIndex As Long) As Long
#Else
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hDC As Long, ByVal nIndex As Long) As Long
#End If


Quindi, nel tuo caso:
Codice: Seleziona tutto
#If VBA7 Then
   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 Long) As LongPtr
#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

Questo dando per assodato che la Declare che usi e' quella che avevi gia' citato.
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi deniel69 » 11/03/18 09:07

In realtà mi sono accorto del link all'articolo dopo aver risposto PcBase, e poi non ho più avuto tempo di rispondere a PcBase.
Ho inserito il codice cosi come lo hai postato tu ma mi segnala rosso ed errore comunque la "Private Declare Function.....".

Dove sto sbagliando?

Non capisco, scusate........
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi Anthony47 » 11/03/18 23:51

Potresti avere quella situazione su Office 2003 o inferiori (forse anche su 2007), dove la costante VBA7 non e' conosciuta.
Tuttavia il codice in rosso e quello che non sara' compilato, quindi credo che il comportamento finale sara' corretto.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Office 2016 problemi compatibilità Private Declare Funct

Postdi deniel69 » 14/03/18 19:28

Grazie Anthony, infatti il codice è rosso ma il file viene aperto senza problemi.

Appena possibile proverò ad aprirlo anche su un 32 bit.

Grazie ancora.
Avatar utente
deniel69
Utente Senior
 
Post: 131
Iscritto il: 17/04/12 22:43


Torna a Applicazioni Office Windows


Topic correlati a "Office 2016 problemi compatibilità Private Declare Function":


Chi c’è in linea

Visitano il forum: Nessuno e 27 ospiti