Controleren of een nieuwere versie beschikbaar is

Status
Niet open voor verdere reacties.

Joete

Gebruiker
Lid geworden
19 sep 2008
Berichten
87
Hallo,

Ik heb een kleine uitdaging. Ik ben bezig met een bestand om ramingen te maken binnen ons bedrijf. Ondertussen zijn we bij versie 1.6 aangekomen, maar dat zal in de toekomst nog verder oplopen.

Wat ik nu wil voorkomen is dat mensen met oude bestanden blijven werken. Nu is het makkelijkst natuurlijk om het oude bestand te verwijderen/verplaatsen, maar dat zal niet altijd op gaan en soms vergeten worden. Daarom ben ik een code aan het maken die het versie nummer controleert. Die code kan ik uit komen. Ik kan ook kijken of na versie 1.6 ook versie 2.6 of versie 1.7 bestaat. Maar stel nu dat versie 1.8 bestaat en 1.7 verwijdert is. Dan lukt me dat nog niet om te controleren. Nu kan ik natuurlijk een loop maken, maar om te voorkomen dat die door moet lopen tot versie 1.150 wil ik eigenlijk alleen maar weten of in de directory een bestand staat met dezelfde naam, maar met alleen een ander versie nummer...

Code:
Private Sub Workbook_Open()
    ' Ff dimmen...
    Dim FileN As String
    Dim Versie As String
    Dim VersieP1 As Integer
    Dim VersieP2 As Integer
    Dim FileNnr1 As Integer
    Dim FileNnr2 As Integer
    Dim Adres As String
    Dim AdresNr As Integer

    ' Dims invullen
    FileN = ThisWorkbook.Name
    Adres = ThisWorkbook.FullName

    ' Kijken of het bestand het "sjabloon" is en niet een opgeslagen projectbestand
    If Left(FileN, 17) = "Sjabloon - Raming" Then
        ' Gegevens splitsen uit bestandsnaam ("Sjabloon - Raming ???? v1.6.xlsm") Op plaats vraagtekens staat een type raming

        ' lengte extensie bepalen
        FileNnr1 = InStrRev(FileN, ".") 

        ' extensie er afhalen
        FileN = Left(FileN, FileNnr1 - 1) 

        ' lengte versienummer bepalen
        FileNnr2 = InStrRev(FileN, "v") 

        ' versienummer in string
        Versie = Right(FileN, FileNnr1 - FileNnr2 - 1) 

        ' Bestandsnaam zonder versienummer en extensie
        FileN = Left(FileN, Len(FileN) - Len(Versie)) 

        ' lengte pad bepalen
        AdresNr = InStrRev(Adres, "\") 

        ' pad in string
        Adres = Left(Adres, AdresNr) 

        ' deel 1 van het versienummer
        VersieP1 = CInt(Left(Versie, InStr(Versie, ".") - 1)) 

        ' deel 2 van het versie nummer
        VersieP2 = CInt(Right(Versie, Len(Versie) - InStr(Versie, "."))) 


        ' kijken of er een nieuwere versie is
        If Len(Dir(Adres & FileN & VersieP1 + 1 & "." & VersieP2 & ".xlsm")) > 0 Or Len(Dir(Adres & FileN & VersieP1 & "." & VersieP2 + 1 & ".xlsm")) > 0 Then
            MsgBox "Er is een nieuwe versie van dit bestand"
        End If
    End If
End Sub

Dat laatste stukje moet dus anders, maar het ontbreekt mij daar op dit moment aan snapvermogen... :shocked:
Ik hoef geen versienummer van de nieuwere versie, maar wil alleen weten of er 1 bestaat.

Alvast bedankt voor het meedenken.

PS. de rest kan misschien ook efficiënter, maar dit werkt voor mij en vindt ik op dit moment voldoende, het gaat mij om het laatste deel.
 
Ik vraag me af of je methodiek wel juist is en niet veel te moeilijk... Ik zou zelf een tekstbestand (bijv. versie_applicatieRaming.txt) aanmaken op een plek waar alleen jij schrijfrechten hebt en de rest leesrechten en daarin het laatste versienummer opgeven. Daarna hoe je alleen te checken of je werkboek hetzelfde versienummer heeft. Zo niet, dan geef je een melding dat men niet de meest recente versie heeft geopend en dat je daarom het werkboek weer sluit...

Maar zo zou ik het doen... :d
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan