Office 365 errori di compilazione su macro VBA

Anonimo
2017-06-08T17:20:45+00:00

Ho installato Office 365 a 64 bit sul mio PC ed ho un problema con una macro in VBA.

Mentre con il precedente Office 2007 tutto funzionava bene ora invece ottengo degli errori su alcune istruzioni.

Vedasi allegato foto 1.

Vorrei sapere se esiste un qualche articolo dal quale su evincono la differenze di queste istruzioni e/o come superare tali discrepanze?

In attesa, grazie e cordiali saluti 

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

5 risposte

Ordina per: Più utili
  1. Anonimo
    2017-06-08T22:48:17+00:00

    Ciao giamoros,

    Ho installato Office 365 a 64 bit sul mio PC ed ho un problema con una macro in VBA.

    Mentre con il precedente Office 2007 tutto funzionava bene ora invece ottengo degli errori su alcune istruzioni.

    Vedasi allegato foto 1.

    Vorrei sapere se esiste un qualche articolo dal quale su evincono la differenze di queste istruzioni e/o come superare tali discrepanze?

    In attesa, grazie e cordiali saluti 

    ,

    Ho installato Office 365 a 64 bit sul mio PC ed ho un problema con una macro in VBA.

    Mentre con il precedente Office 2007 tutto funzionava bene ora invece ottengo degli errori su alcune istruzioni.

    Vedasi allegato foto 1.

    Vorrei sapere se esiste un qualche articolo dal quale su evincono la differenze di queste istruzioni e/o come superare tali discrepanze?

    In attesa, grazie e cordiali saluti 

    Prova a sostituire la tua dichiarazione della funzione API  sndPlaySound, ovvero

    '---------->>

    Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long

    '<<----------

     con qualcosa del genere

    '=========>>

    Option Explicit

    #If VBA7 And Win64 Then

        Private Declare Function  PtrSafe sndPlaySound Lib "winmm.dll"

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                               ByVal uFlags As Long) As Long

    #Else

        Private Declare Function sndPlaySound Lib "winmm.dll" _

                 Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long

    #End if

        '\ Tuo codice funzionante

    '<<=========

    A questo proposito, vedi anche, purtroppo disponible (credo) solo in inglese (l'ho tradotto io  ):

    64-Bit Visual Basic for Applications Overview

    Vedi anche, sempre in inglese,

      Understanding Conditional Compilation

    e

           Compiler Constants

    Postscriptum:

    Nota che ho aggiunto  la riga mancante per chiudere la dichiarazione, ovvero:

    #End if

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-06-10T09:19:03+00:00

    Poiché userò lo stesso il programma su un sistema a 64 bit ed il programma Office 365 con tutti i suoi programmi a 64 bit

    Vedi foto del sistema

    vedi foto del programma Office

    ho optato per la sua ultima indicazione :  Sistema a 64 bit, programma a 64 bit.

    Il risultato però è lo stesso.

    Vedi foto dell'errore nel modulo in oggetto.

     Rimango in attesa e cordiali saluti

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-06-09T21:42:24+00:00

    Ciao giamoros,

    Ho inserito le istruzioni suggerite ma come vede quando compilo vengono evidenziate in rosso con la stesso errore di compilazione.

    Ho nche letto i rferimenti suggeritemi , ma il mio inglese scolastico non è all'altezza del compito richiestomi.

    Rimango in attes di ulteriori suggerimenti.

    ''

    Option Base 1

    Option Explicit

    #If VBA7 And Win64 Then

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                               ByVal uFlags As Long) As Long

    #Else

    Private Declare Function sndPlaySound Lib "winmm.dll" _

                 Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long _

                     ByVal uFlags As Long) As Long

    #End If 

    Non credo che si tratti di un errore!

    È assolutamente normale che il ramo inapplicabile di una dichiarazione di compilazione condizionale venga evidenziata in rosso questo non dovrebbe impedire l'esecuzione del codice.

    Più particilarmente, poiché stai utilizzando una versione 64Bit, dovresti vedere qualcosa del genere:

            

    Io, invece, utilizzando una versione a 32Bit, vedo il primo ramo delle dichiarazione evidenziata in rosso:

           

    Se tuttavia sei sicuro che il codice sarà sempre utilizzato solo con una versione a 64 bit di Excel, puoi semplicemente utilizzare:

    Option Explicit 

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _ 

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _ 

                               ByVal uFlags As Long) As Long 

    ===

    Regards,

    Norman

    Ho inserito le istruzioni suggerite ma come vede quando compilo vengono evidenziate in rosso con la stesso errore di compilazione.

    Ho nche letto i rferimenti suggeritemi , ma il mio inglese scolastico non è all'altezza del compito richiestomi.

    Rimango in attes di ulteriori suggerimenti.

    ''

    Option Base 1

    Option Explicit

    #If VBA7 And Win64 Then

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                               ByVal uFlags As Long) As Long

    #Else

    Private Declare Function sndPlaySound Lib "winmm.dll" _

                 Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long _

                     ByVal uFlags As Long) As Long

    #End If 

    Oltre alla mia risposta precedente, nota che c'è un errore di sintassi nella tua dichiarazione. Più in particolare, la riga in grassetto è stata duplicata. Quindi, per rendere il codice compatibile sia con Excel 64Bit che Excel 32Bit, prova a sostituire la tua dichiarazione con:

    '=========>>

    Option Explicit

    Option Base 1

    #If VBA7 And Win64 Then

        Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _

                    Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long

    #Else

        Private Declare Function sndPlaySound Lib "winmm.dll" _

                      Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                 ByVal uFlags As Long) As Long

    #End If

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-06-09T16:10:03+00:00

    Ciao giamoros,

    Ho inserito le istruzioni suggerite ma come vede quando compilo vengono evidenziate in rosso con la stesso errore di compilazione.

    Ho nche letto i rferimenti suggeritemi , ma il mio inglese scolastico non è all'altezza del compito richiestomi.

    Rimango in attes di ulteriori suggerimenti.

    ''

    Option Base 1

    Option Explicit

    #If VBA7 And Win64 Then

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                               ByVal uFlags As Long) As Long

    #Else

    Private Declare Function sndPlaySound Lib "winmm.dll" _

                 Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long _

                     ByVal uFlags As Long) As Long

    #End If 

    Non credo che si tratti di un errore!

    È assolutamente normale che il ramo inapplicabile di una dichiarazione di compilazione condizionale venga evidenziata in rosso questo non dovrebbe impedire l'esecuzione del codice.

    Più particilarmente, poiché stai utilizzando una versione 64Bit, dovresti vedere qualcosa del genere:

            

    Io, invece, utilizzando una versione a 32Bit, vedo il primo ramo delle dichiarazione evidenziata in rosso:

           

    Se tuttavia sei sicuro che il codice sarà sempre utilizzato solo con una versione a 64 bit di Excel, puoi semplicemente utilizzare:

    Option Explicit 

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _ 

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _ 

                               ByVal uFlags As Long) As Long 

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-06-09T13:55:23+00:00

    Ho inserito le istruzioni suggerite ma come vede quando compilo vengono evidenziate in rosso con la stesso errore di compilazione.

    Ho nche letto i rferimenti suggeritemi , ma il mio inglese scolastico non è all'altezza del compito richiestomi.

    Rimango in attes di ulteriori suggerimenti.

    ''

    Option Base 1

    Option Explicit

    #If VBA7 And Win64 Then

    Private Declare Function PtrSafe sndPlaySound Lib "winmm.dll" _

                Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                               ByVal uFlags As Long) As Long

    #Else

    Private Declare Function sndPlaySound Lib "winmm.dll" _

                 Alias "sndPlaySoundA" (ByVal lpszSoundName As String, _

                                ByVal uFlags As Long) As Long _

                     ByVal uFlags As Long) As Long

    #End If

    La risposta è stata utile?

    0 commenti Nessun commento