Autor
|
Thema: Makro-Version abfragen (1413 / mal gelesen)
|
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 11. Sep. 2018 13:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Community, hat jemand für mich eventuell einen Denkanstoß oder ähnliches? Was ich versuchen möchte: Ich habe in Excel eine Tabelle, welche via VBA in eine Zeichnung in Catia überführt wird. Für den Fall, dass Fehler im Programm enthalten sind, welche nur durch reichliches Testen in Erfahrung gebracht warden können, möchte ich eine Makro-Versions-Prüfung einbinden. Es kann durchaus der Fall sein, dass zum Beispiel die Excel-Datei in die Zeichnung als Objekt eingebunden ist. Hierzu meine Frage: Wenn ich das Makro aktualisiere und zum Beispiel einen Index (Version 1.0 zu Version 1.1) erhöhe, dann soll entsprechend eine Meldung angezeigt werden, wenn eine ältere Version des Excel-Programmes verwendet wird. Die aktuelle Excel-Datei wird sich aller Wahrscheinlichkeit nach global auf einem Netzwerk befinden. Es soll also jedes Mal, wenn eine eingebundene Excel-Datei geöffnet wird, überprüft werden, ob das Makro, welches dahinter steckt noch das aktuellste ist. Hat hierzu jemand einen Denkanstoß oder vielleicht sogar ähnliches schon einmal programmiert? Danke für eure Antworten! Gruß Diesaster Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 11. Sep. 2018 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Servus Also ganz klar ist mir nicht was du vor hast. Wo befindet sich das Makro? Nur in der Excel-Mappe? hast du mehrere Makro die miteinander "sprechen"? Wie wird das Makro ausgelöst? Meine Ideen dazu: - Makro aus der Excel-Mappe raus lösen, und nur zB als CATVba in einem globalen Verzeichnis ablegen. Dann ist immer nur die neuste Version vorhanden - In der Initialisierung der Makro einen Versionscheck einbauen. Die Aktuelle Version könntest du zB als Parameter im Environment ablegen Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 13. Sep. 2018 08:13 <-- editieren / zitieren --> Unities abgeben:
Hallo bgrittmann, Das Makro befindet sich in der Excel-Mappe selbst. Es ist nur ein Makro in der Mappe mit mehreren Modulen. Das Makro wird über Textfelder ausgelöst. Zitat: Makro aus der Excel-Mappe raus lösen, und nur zB als CATVba in einem globalen Verzeichnis ablegen. Dann ist immer nur die neuste Version vorhanden
Zum einen ist eine CATVBA schlecht, da nicht jeder Rechner die VBA-Application in Catia installiert hat. -> Müsste wenn erst installiert warden. Zum anderen ist die Tabelle in Excel ein Standard, der auf die Zeichnung gebracht wird. Dieser kann sich ändern und somit sind Bezeichnungen in der Tabelle veränderlich und nicht nur das Makro. Zitat: In der Initialisierung der Makro einen Versionscheck einbauen. Die Aktuelle Version könntest du zB als Parameter im Environment ablegen
Genau so etwas wäre die Richtung, in die ich gerne ansetzen würde. Falls du einen Parameter in Catia meinst, so ist das denke ich weniger gut. Es sollte nach Möglichkeit automatisch passieren. Eine Idee von mir ist es, in einem Tabellenblatt, in dem sich Einstellungen befinden eine Zelle mit der Version einzutragen. Aber hier stellt sich die Frage: Wie schaffe ich es die im globalen Verzeichnis liegende Datei mit der verwendeten Datei zu vergleichen, ohne dass der Benutzer etwas davon mit bekommt. Es soll nur eine Meldung erscheinen, wenn Differenzen vorliegen. Eine zweites, eventuelles Problem, ist: Was passiert wenn die Datei im globalen Verzeichnis im Moment von einem anderen Benutzer verwendet wird. Kann dann trotzdem eine Überprüfung stattfinden? Noch eine Frage, die hinzu kommen würde, ist: Kann ein als Objekt in die Zeichnung eingebettetes Excel auch auf neuere Version überprüft warden? Danke für deine Antwort. Entschuldige die spate Rückmeldung. Gruß Diesaster Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Randle Mitglied CAD/PLM Consultant
Beiträge: 695 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29
|
erstellt am: 13. Sep. 2018 08:18 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Hallo, du könntest eine einfache Textdatei zentral (für jeden Anwender erreichbar) ablegen. Entweder schreibst du die aktuell gültige Version in die Datei oder benennst die Datei entsprechend. Beim Start des Makros könntest du die aktuell gültige Version mit einer Variablen/Konstanten innerhalb des Quellcodes vergleichen. Wenn ungleich, dann Meldung/Abbruch. Habe dieses Prinzip schon mehrfach verwendet, ohne Probleme. Gruß Randle ------------------ Wer für nichts steht, fällt für alles! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 13. Sep. 2018 08:47 <-- editieren / zitieren --> Unities abgeben:
|
C.Samer Mitglied CAD Administrator
Beiträge: 72 Registriert: 03.05.2017
|
erstellt am: 27. Sep. 2018 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für Diesaster
Hey, du kannst auch direkt aus dem Makro die Version auslesen. Habe das mal so in einem alten VBA Projekt verwendet und würde es jetzt so nicht mehr machen (vor allem da ich jetzt nur noch in CATScript programmiere) aber vielleicht hilft es dir ja! Copy Paste: Code:
Attribute VB_Name = "ProjectName" Option Explicit Global Const glbProject = "ProjectName" Global Const glbVersion = "1.2" Global Const glbLanguage = "VBA" Global Const glbAuthor = "Samer Christoph" Global Const glbCompany = "Max Mustermann GmbH" Global Const glbCreationDate = "23.March.2015, 12:00" Global Const glbLastUpdate = "13.April.2015, 09:15" Function CheckVersion() On Error Resume Next Dim strVerFile As String strVerFile = "Y:\CatiaMakros\" & glbProject & "\" & glbProject & ".bas" If CATIA.FileSystem.FileExists(strVerFile) Then Dim objFile As File Dim objTextStream As TextStream Set objFile = CATIA.FileSystem.GetFile(strVerFile) Set objTextStream = objFile.OpenAsTextStream("ForReading") Dim intCountLine As Integer intCountLine = 0 Dim strVerLine As String For intCountLine = 0 To 20 strVerLine = objTextStream.ReadLine If InStr(strVerLine, "Global Const glbVersion = ") Then strVerLine = Split(strVerLine, "Global Const glbVersion = " & Chr(34))(1) strVerLine = Split(strVerLine, Chr(34))(0) If strVerLine <> CStr(glbVersion) Then MsgBox "New version of this macro available." & vbCrLf & vbCrLf & _ "Your version:" & vbTab & CStr(glbVersion) & vbCrLf & _ "Newest version:" & vbTab & strVerLine objTextStream.Close End Else objTextStream.Close Exit Function End If End If Next If intCountLine >= 20 Then MsgBox "An error occured while checking for macro-updates", vbExclamation, "Version Entry not found" objTextStream.Close End End If End If If Err.Number <> 0 Then MsgBox "An error occured while checking for macro-updates", vbExclamation, "General Error" objTextStream.Close Err.Clear End End If On Error GoTo 0 End Function
Gruß, Christoph [Diese Nachricht wurde von C.Samer am 27. Sep. 2018 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Diesaster Mitglied Student
Beiträge: 61 Registriert: 05.11.2015
|
erstellt am: 27. Sep. 2018 12:00 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|