Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro-Version abfragen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Makro-Version abfragen (1386 mal gelesen)
Diesaster
Mitglied
Student


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 11. Sep. 2018 13:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 11. Sep. 2018 19:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 13. Sep. 2018 08:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Randle an!   Senden Sie eine Private Message an Randle  Schreiben Sie einen Gästebucheintrag für Randle

Beiträge: 695
Registriert: 12.04.2003

Win10 x64
CATIA V5 R18, R19, R21, R27-29

erstellt am: 13. Sep. 2018 08:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 13. Sep. 2018 08:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Randle,

danke für die Idee. Das könnte genau das sein, wonach ich gesucht habe!

Hätte ich auch selbst darauf kommen können.

Gruß
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

C.Samer
Mitglied
CAD Administrator


Sehen Sie sich das Profil von C.Samer an!   Senden Sie eine Private Message an C.Samer  Schreiben Sie einen Gästebucheintrag für C.Samer

Beiträge: 72
Registriert: 03.05.2017

erstellt am: 27. Sep. 2018 11:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Diesaster 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von Diesaster an!   Senden Sie eine Private Message an Diesaster  Schreiben Sie einen Gästebucheintrag für Diesaster

Beiträge: 61
Registriert: 05.11.2015

erstellt am: 27. Sep. 2018 12:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo C.Samer,

herzlichen Dank für den Code. Die Idee bzw. Programmierung finde ich sehr hilfreich.

Gruß
Diesaster

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz