You are here:Home-Domande su Excel VBA e MACRO-WIN10 64 BIT
WIN10 64 BIT2018-09-14T17:49:45+02:00

Home Forum Domande su Excel VBA e MACRO WIN10 64 BIT

Visualizzazione 4 filoni di risposte
  • Autore
    Post
    • AvatarYAYAN
      Partecipante
        Post totali: 36

        Buonasera,

        sono nuova e vorrei chiedere cortesemente il Vs aiuto.

        Ho sviluppato un programmino in xlsm, il mio problema è che con win 8 64 bit funziona alla perfezione, si attivano le userform, macro etc; ma quando lo apro su win 10 64bit, la prima userform si attiva, ma i pulsanti per navigare tra le altre userform non funzionano, come se ci fosse qualcosa che blocca l’esecuzione, ho provato su interne con l’inserimento del ptrsafe, ma non riesco a risolvere la situazione,

        qualcuno di voi può aiutarmi.

        ‘Chiamo le API
        Private Declare PtrSafe Function FindWindow Lib “user32” _
        Alias “FindWindowA” _
        (ByVal lpClassName As String, _
        ByVal lpWindowName As String) As Long

        ‘prende lo stile corrente
        Private Declare PtrSafe Function GetWindowLong Lib “user32” _
        Alias “GetWindowLongA” _
        (ByVal hWnd As Long, _
        ByVal nIndex As Long) As Long

        ‘Imposta il nuovo stile
        Private Declare PtrSafe Function SetWindowLong Lib “user32” _
        Alias “SetWindowLongA” (ByVal hWnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) As Long

        Private Declare PtrSafe Function DrawMenuBar Lib “user32” _
        (ByVal hWnd As Long) As Long

        Private Declare PtrSafe Function SetFocus Lib “user32” _
        (ByVal hWnd As Long) As Long
        ‘stile della finestra
        Private Const GWL_STYLE As Long = (-16)
        ‘stile della finestra esteso
        Private Const GWL_EXSTYLE As Long = (-20)
        ‘imposta barra del titolo
        Private Const WS_CAPTION As Long = &HC00000
        ‘imposta barra di chiusura
        Private Const WS_SYSMENU As Long = &H80000
        ‘imposta finestra ridimensionabile
        Private Const WS_THICKFRAME As Long = &H40000
        ‘imposta pulsante riduci
        Private Const WS_MINIMIZEBOX As Long = &H20000
        ‘imposta pulsante ingrandisci
        Private Const WS_MAXIMIZEBOX As Long = &H10000

        Private mhWndForm As Long

        ‘Imposto le nuove proprietà
        Public Property Set Form(oForm As Object)

        ‘Ottengo le impostazioni di UserForm in base alle versioni
        If Val(Application.Version) < 9 Then
        ‘Excel 97
        mhWndForm = FindWindow(“ThunderXFrame”, oForm.Caption)
        Else
        ‘Excel 2000 o superiori
        mhWndForm = FindWindow(“ThunderDFrame”, oForm.Caption)
        End If

        SetFormStyle

        End Property

        Private Sub SetFormStyle()

        Dim lStyle As Long

        lStyle = GetWindowLong(mhWndForm, GWL_STYLE)

        ‘(1) Crea una finestra senza barra del titolo
        ‘SetWindowLong mhWndForm, GWL_STYLE, lStyle And Not WS_CAPTION
        ‘(2) Crea una finestra senza pulsante di chiusura
        SetWindowLong mhWndForm, GWL_STYLE, lStyle And Not WS_SYSMENU
        ‘(3) Crea una finestra ridimensionabile
        ‘SetWindowLong mhWndForm, GWL_STYLE, lStyle Or WS_THICKFRAME
        ‘(4) Crea una finestra ridimensionabile e riducibile a icona
        SetWindowLong mhWndForm, GWL_STYLE, lStyle _
        Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX

        ‘Aggiorno i cambiamenti
        DrawMenuBar mhWndForm
        SetFocus mhWndForm
        End Sub

        #If Win64 Then

        Private Declare PtrSafe Function SetWindowLong _
        Lib “user32” _
        Alias “SetWindowLongA” ( _
        ByVal hWnd As LongLong, _
        ByVal nIndex As LongLong, _
        ByVal dwNewLong As LongLong) _
        As Long

        Private Declare PtrSafe Function FindWindow _
        Lib “user32” _
        Alias “FindWindowA” ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) _
        As Long

        #Else

        Private Declare Function SetWindowLong _
        Lib “user32” _
        Alias “SetWindowLongA” ( _
        ByVal hWnd As Long, _
        ByVal nIndex As Long, _
        ByVal dwNewLong As Long) _
        As Long

        Private Declare Function FindWindow _
        Lib “user32” _
        Alias “FindWindowA” ( _
        ByVal lpClassName As String, _
        ByVal lpWindowName As String) _
        As Long

        #End If

        Private Sub UserForm_Initialize()
        SetWindowLong FindWindow( _
        vbNullString, Me.Caption), _
        -16, -2067791744
         

         

      • Avatarliquid
        Partecipante
          Post totali: 14

          Ciao. Non sono un esperto come tanti utenti di questo forum, ma sembra che il problema possa derivare dalla versione di office. Tu dici che lo esegui su Windows 10 64 bit, ma la versione di office?  Forse anch’essa è a 64 bit? Potresti postare una copia del file epurata dai dati personali? Potremmo fare una prova con diverse configurazioni.

          • Questa risposta è stata modificata 1 anno, 9 mesi fa da Avatarliquid.
        • AvatarYAYAN
          Partecipante
            Post totali: 36

            Buongiorno,

            il mio sistema operativo è a 64 bit, processore basata su x64

            edizione windows 10 pro

            la versione di office è:

            Office professional plus 2016

            Ringrazio chiunque possa aiutarmi, e soprattutto Liquid per avermi risposto in tempo breve.

          • AvatarYAYAN
            Partecipante
              Post totali: 36

              in vba nei riferimenti manca:

              EMOdelViewr 1.0 type Library

              può essere questo il motivo per il quale non funzionano le userform?

               

            • sidsid
              Moderatore
                Post totali: 749


                la versione di office è:
                Office professional plus 2016.

                Liquid (che saluto) ti ha chiesto se anche office è a 64 bit

            Visualizzazione 4 filoni di risposte
            • Devi essere connesso per rispondere a questo topic.