You are here:--WIN10 64 BIT
WIN10 64 BIT 2018-09-14T17:49:45+00:00

Home Forum Domande su Excel VBA e MACRO WIN10 64 BIT

  • Autore
    Articoli
  • YAYAN
    Partecipante
      Post totali: 34
      #6607 |

      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
       

       

    • liquid
      Partecipante
        Post totali: 9

        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 2 mesi fa da  liquid.
      • YAYAN
        Partecipante
          Post totali: 34

          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.

        • YAYAN
          Partecipante
            Post totali: 34

            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: 440


              la versione di office è:
              Office professional plus 2016.

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

            Devi essere loggato per rispondere a questa discussione.

            Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

            Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

            Chiudi