Thema Datum  Von Nutzer Rating
Antwort
03.06.2020 22:48:51 Gast18231
NotSolved
03.06.2020 23:13:14 Flotter Feger
NotSolved
03.06.2020 23:46:58 Gast87999
NotSolved
04.06.2020 06:23:26 Flotter Feger
NotSolved
04.06.2020 22:45:22 Gast26640
NotSolved
04.06.2020 07:21:14 Mase
NotSolved
04.06.2020 22:48:58 Gast93578
NotSolved
Blau Eigene Versionsabfrage in eine Excel Datei einbauen
04.06.2020 07:27:50 Gast13465
Solved
04.06.2020 09:10:14 Gast56489
NotSolved
04.06.2020 22:55:38 Gast25664
NotSolved
04.06.2020 22:52:06 Gast19801
NotSolved

Ansicht des Beitrags:
Von:
Gast13465
Datum:
04.06.2020 07:27:50
Views:
647
Rating: Antwort:
 Nein
Thema:
Eigene Versionsabfrage in eine Excel Datei einbauen
  1. Das Makro müsste beim Öffnen aufgerufen werden. (Workbook_Open - Event)
  2. Der Nutzer bekommt hier eine Meldung ob die Version aktuell ist oder nicht - alles andere überlasse ich dir.

Es wird die Version einer Mappe mit der höchsten Version "im Ordner" (1.0 , 1.1 , 1.2 , etc.) verglichen.

Option Explicit

Private Type TVersion
  Major     As Integer
  Minor     As Integer
'  Build     As Integer
'  Revision  As Integer
End Type

Public Sub Test()
  
  Dim regExp      As Object:      Set regExp = CreateObject("VBScript.RegExp")
  Dim regExpM     As Object
  Dim udtRepoV    As TVersion
  Dim udtWkbV     As TVersion:    udtWkbV = CVersionUDT(1, 0)  'Beispiel: Version 1.0; / käme aus Zelle A1 der Mappe
  Dim strRepoPath As String:      strRepoPath = "X:\Repo\"     'Beispiel
  Dim strFolder   As String
  
  regExp.Pattern = "(\d+)\.(\d+)" '<Version> := <Major>.<Minor>
  
  'Alle Verzeichnisse in strFolder abklappern und höchste Version (in deren Namen) ermitteln
  strFolder = Dir$(strRepoPath, vbDirectory)
  Do Until strFolder = ""
    
    If strFolder <> "." And strFolder <> ".." Then
      
      Set regExpM = regExp.Execute(strFolder)
      
      If regExpM.Count > 0 Then
        If CompareVersion(udtRepoV, CVersionUDT(CInt(regExpM(0).SubMatches(0)), CInt(regExpM(0).SubMatches(1)))) < 0 Then
          udtRepoV.Major = CInt(regExpM(0).SubMatches(0))
          udtRepoV.Minor = CInt(regExpM(0).SubMatches(1))
        End If
      End If
      
    End If
    
    strFolder = Dir$()
  Loop
  
  'wir kennen nun die höchste Version im Repository
  Debug.Print "höchste vorhandene Version"; Tab(30); CVersionUDT2Str(udtRepoV)
  'und wir kennen auch die Version der - gerade geöffneten - Mappe:
  Debug.Print "Version der Mappe"; Tab(30); CVersionUDT2Str(udtWkbV)
  
  'wir vergleichen nun <Version_Mappe> mit <Version_Repository>
  Select Case CompareVersion(udtWkbV, udtRepoV)
    Case 0:   Call MsgBox("Version der Mappe ist aktuell.", vbInformation)
    Case -1:  Call MsgBox("Version der Mappe (" & CVersionUDT2Str(udtWkbV) & ") ist veraltet.", vbExclamation)
    Case 1:   Call MsgBox("Version der Mappe (" & CVersionUDT2Str(udtWkbV) & ") ist größer als Version im Repository." & vbNewLine & vbNewLine & "Bitte kontaktieren sie: 'Max Mustermann@diefirma.de'", vbCritical)
  End Select
  
  Set regExpM = Nothing
  Set regExp = Nothing
  
End Sub

Private Function CVersionUDT(Major As Integer, Minor As Integer) As TVersion
  CVersionUDT.Major = Major
  CVersionUDT.Minor = Minor
End Function

Private Function CVersionUDT2Str(Version As TVersion) As String
  CVersionUDT2Str = Version.Major & "." & Version.Minor
End Function

Private Function CompareVersion(Version As TVersion, VersionRef As TVersion) As Long
  If Version.Major = VersionRef.Major And Version.Minor = VersionRef.Minor Then
    CompareVersion = 0
  ElseIf Version.Major > VersionRef.Major Then
    CompareVersion = 1
  Else
    CompareVersion = -1
  End If
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
03.06.2020 22:48:51 Gast18231
NotSolved
03.06.2020 23:13:14 Flotter Feger
NotSolved
03.06.2020 23:46:58 Gast87999
NotSolved
04.06.2020 06:23:26 Flotter Feger
NotSolved
04.06.2020 22:45:22 Gast26640
NotSolved
04.06.2020 07:21:14 Mase
NotSolved
04.06.2020 22:48:58 Gast93578
NotSolved
Blau Eigene Versionsabfrage in eine Excel Datei einbauen
04.06.2020 07:27:50 Gast13465
Solved
04.06.2020 09:10:14 Gast56489
NotSolved
04.06.2020 22:55:38 Gast25664
NotSolved
04.06.2020 22:52:06 Gast19801
NotSolved