Memorizzare versione Excel



  • Memorizzare versione Excel
    di Fabio (utente non iscritto) data: 26/07/2017 15:51:08

    Buongiorno a tutti,
    ho provato a fare una ricerca ma non ho trovato nulla.
    Avrei la necessità di capire (e memorizzare) la versione (2003 - 2007 ecc.) di excel che sto' utilizzando mentre eseguo il codice vba.
    E' possibile e come?
    Grazie



  • di Marius44 data: 26/07/2017 16:11:10

    Ciao
    Prova con la funzione sottostante.

    Fai sapere. Ciao,
    Mario
     
    Public Function fVersioneExcel() As String
        With Application
                Select Case Val(Mid(.Version, 1, _
                InStr(1, .Version, ".") - 1))
                Case Is = 14
                    fVersioneExcel = "Excel 2010"
                Case Is = 12
                    fVersioneExcel = "Excel 2007"
                Case Is = 11
                    fVersioneExcel = "Excel 2003"
                Case Is = 10
                    fVersioneExcel = "Excel 2002(XP)"
                Case Is = 9
                    fVersioneExcel = "Excel 2000"
            End Select
        End With
    End Function



  • di Fabio (utente non iscritto) data: 26/07/2017 17:01:29

    Direi che è perfetta.
    Grazie mille



  • di Vecchio Frac data: 26/07/2017 18:23:17

    Direi di precisare anche che quanto sopra vale per la piattaforma Windows... perchè per Mac e OS/2 le versioni sono differenti sia per numero che per anno ^_^ (ps la versione 13 non esiste perchè non è mai stata pubblicata per motivi di superstizione)





  • di Fabio (utente non iscritto) data: 27/07/2017 12:19:46

    grazie Vecchio Frac per la precisazione



  • di fabio (utente non iscritto) data: 01/08/2017 17:53:37

    Ho fatto dei tentativi ma non sono riuscito.... (sono poco pratico di VBA)

    Avrei bisogno che la macro si avviasse quando apro il file. Al momento in apertura ho solo quanto riportato sotto.
    Grazie
     
    Private Sub Workbook_Open()
            Application.ScreenUpdating = False
            Sheets("MENU").Select
            Application.ScreenUpdating = True
    End Sub



  • di Vecchio Frac data: 01/08/2017 21:29:27

    cit. "Avrei bisogno che la macro si avviasse quando apro il file"
    ---> Ma secondo te, guardando il codice di Workbook_Open, perchè mai la tua macro non si avvia? Qui non c'entra niente la programmazione, solo la logica. Ragiona un attimo (cioè: spiega con parole tue ogni riga del codice di Workbook_Open) e ti salterà all'occhio cosa devi modificare (integrare, aggiungere).






  • di fabio (utente non iscritto) data: 02/08/2017 10:14:10

    grazie per l'interessamente.
    La macro di apertura funziona. Infatti quando apro il file mi si posizione sul foglio Menù.
    E' quando inserisco il codice per il rilevamento della versione che si blocca. Sicuramente sbaglio ma non riesco a risolvere il problema.
    Grazie
     
    Private Sub Workbook_Open()
            Application.ScreenUpdating = False
            Sheets("MENU").Select
            Application.ScreenUpdating = True
                  
            With Application
                Select Case Val(Mid(.Version, 1, _
                InStr(1, .Version, ".") - 1))
                Case Is = 14
                    fVersioneExcel = "Excel 2010"
                Case Is = 12
                    fVersioneExcel = "Excel 2007"
                Case Is = 11
                    fVersioneExcel = "Excel 2003"
                Case Is = 10
                    fVersioneExcel = "Excel 2002(XP)"
                Case Is = 9
                    fVersioneExcel = "Excel 2000"
            End Select
        End With
        Range("a1").Value = fVersioneExcel
    End Sub



  • di Vecchio Frac data: 02/08/2017 10:43:04

    Strano, quale errore? e su quale riga? cosa significa "si blocca"?
    Ho riscritto semplificandolo il tuo codice ma anche quello originale funziona perfettamente..
     
    Option Explicit
    
    'codice in ThisWorkbook (o QuestaCartellaDiLavoro nella vers. italiana)
    Private Sub Workbook_Open()
    Dim i As Integer
            Sheets("MENU").Select
            i = Val(Application.Version)
            Range("A1") = "Excel " & Choose(i - 4, "5", "6", "95", "97", "2000", "2002 (XP)", _
                                  "2003", "2007", "", "2010", "2013")
    End Sub






  • di fabio (utente non iscritto) data: 02/08/2017 11:05:30

    mi dava il messaggio "Errore di compilazione - La chiamata di funzione a sinistra dell'assegnazione deve restituire Variant o Objet" e si posizionava su fVersioneExcel.
    L'ho sostituito con quello che hai riscritto e funziona perfettamente.
    Grazie mille e buona giornata.



  • di Vecchio Frac data: 02/08/2017 11:39:49

    E sai perchè? per quelle due paroline magiche "Option Explicit".
    Se le metti in testa al tuo modulo modulo e utilizzi il codice originale vedrai che funziona (devi anche dichiarare fVersioneExcel as String) ^_^





  • di fabio (utente non iscritto) data: 02/08/2017 12:08:26

    questo ti conferma la mia incompetenza.
    Sicuramente farò buon uso di quanto mi hai spiegato.
    Garzie