Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks Enterprise PDM
  Neuste Version mit Makro holen

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
  
Finden Sie die richtigen Kunststoffmaterialien für Ihre Produktdesigns, Webinar am 02.08.2024
Autor Thema:  Neuste Version mit Makro holen (296 / mal gelesen)
Mutaz Yunan
Mitglied
Konstrukteur


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

Beiträge: 26
Registriert: 07.06.2017

erstellt am: 28. Mai. 2024 10:12    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 zusammen,
wie Kann man die neuste Version einer Datei mit vba holen, wenn kein Lokal datei davon verfügbar ist?
Also Ein Tresorordner enthält Dateien, ich möchte mit einem Makro in SolidWorks die neuste Version des Inhalts holen. 
Ich habe es versucht aber leider nicht geklappt, Weil mein Code nur in meinem Lokalordner sucht und findet keine Datein. 
Wenn die DateiNamen mir bekannt sind, oder wenn der Inhalt schon mal auf meinen Rechner geöffnet sind, kann ich die neuste Version holen.
Kann jemand mir meinen Code erweitern?
Danke schön im Voraus

Mein Code ist:

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Tresor As EdmVault5
Dim file As IEdmFile5
Dim folder As IEdmFolder5
Dim TresorVersion, LocalVersion, TresorName, OriginalPfad, DateiName As String

Sub VersionHolen()
   
    Set swApp = Application.SldWorks
    Set Tresor = New EdmVault5
   
    TresorName = "MyTresor"
    Tresor.LoginAuto TresorName, 0
    OriginalPfad = "C:\MyTresor\Teile\P-00005\"
   
    Set folder = Tresor.GetFolderFromPath(OriginalPfad)
   
    ChDrive Left(OriginalPfad, 1)
    ChDir OriginalPfad
    DateiName = Dir(CurDir & "\")
    ' Inhalt auslesen
    Do Until DateiName = ""
        Set file = Tresor.GetFileFromPath(OriginalPfad & DateiName)
        TresorVersion = file.CurrentVersion
        LocalVersion = file.GetLocalVersionNo(OriginalPfad & DateiName)
       
        If TresorVersion <> LocalVersion Then
            ' Neuste Version holen
            file.GetFileCopy 0, 0, 0, EdmGetFlag.EdmGet_MakeReadOnly, ""
        End If
       
        DateiName = Dir
    Loop

End Sub

------------------
Mutaz Yunan

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

ad_man
Mitglied
freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))


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

Beiträge: 1378
Registriert: 20.12.2003

SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000

erstellt am: 28. Mai. 2024 12:05    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 Mutaz Yunan 10 Unities + Antwort hilfreich

Hallo Mutaz,

schau dir doch mal folgendes Beispiel an:

https://www.codestack.net/solidworks-pdm-api/files/local-cache/

Das sollte dein Problem lösen 

------------------
==========
Gruß
Andreas
==========

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 723
Registriert: 17.01.2007

SWX 2023 SP5
DraftSight 2023
Win 11 Enterprise
Intel i7-13700
64GB RAM
Nvidia RTX A2000
SWx EPDM
AP+

erstellt am: 29. Mai. 2024 08:35    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 Mutaz Yunan 10 Unities + Antwort hilfreich

Müsste so funktionieren:
Code:
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Tresor As EdmVault5
Dim file As IEdmFile5
Dim folder As IEdmFolder5
Dim TresorVersion, LocalVersion, TresorName, OriginalPfad, DateiName As String

Sub VersionHolen()
  
    Set swApp = Application.SldWorks
    Set Tresor = New EdmVault5
  
    TresorName = "MyTresor"
    Tresor.LoginAuto TresorName, 0
    OriginalPfad = "C:\MyTresor\Teile\P-00005\"
  
    Set folder = Tresor.GetFolderFromPath(OriginalPfad)
  
    ChDrive Left(OriginalPfad, 1)
    ChDir OriginalPfad
    DateiName = Dir(CurDir & "\")

'Neueste Version holen
Call GetLatest(DateiName)

    ' Inhalt auslesen
    Do Until DateiName = ""
        Set file = Tresor.GetFileFromPath(OriginalPfad & DateiName)
        TresorVersion = file.CurrentVersion
        LocalVersion = file.GetLocalVersionNo(OriginalPfad & DateiName)
      
        If TresorVersion <> LocalVersion Then
            ' Neuste Version holen
            file.GetFileCopy 0, 0, 0, EdmGetFlag.EdmGet_MakeReadOnly, ""
        End If
      
        DateiName = Dir
    Loop

End Sub

Private Sub GetLatest(File As String)

    Dim eFile As IEdmFile8
    Dim BG As IEdmBatchGet
    Dim files(1) As EdmSelItem
    Dim eFolder As IEdmFolder5
    Dim Pos As IEdmPos5
   
    'get the file to get lastest
    Set eFile = Tresor.GetFileFromPath(File)
   
    If Not eFile Is Nothing Then
        Set Pos = eFile.GetFirstFolderPosition
        Set eFolder = eFile.GetNextFolder(Pos)
        'Get the file from the folder
       
        FileID = eFile.ID
       
        files(0).mlDocID = FileID
        files(0).mlProjID = eFolder.ID
       
        Set BG = Tresor.CreateUtility(EdmUtil_BatchGet)
       
        Call BG.AddSelection(Tresor, files())
        Call BG.CreateTree(0, EdmGetCmdFlags.Egcf_Nothing)  'Egcf_SkipExisting)
        Call BG.GetFiles(0, Nothing)
    End If

End Sub


Funktioniert analog auch für alle Dateien eines Verzeichnisses:

Code:
Function GetLatestFolder(FolderPath As String)

    Dim BG As IEdmBatchGet
    Dim files(1) As EdmSelItem
    Dim eFolder As IEdmFolder5
   
    'get the folder to get lastest
    Set eFolder = Tresor.GetFolderFromPath(FolderPath)
   
    FileID = 0
   
    files(0).mlDocID = FileID
    files(0).mlProjID = eFolder.ID
   
    Set BG = Tresor.CreateUtility(EdmUtil_BatchGet)
   
    Call BG.AddSelection(Tresor, files())
    Call BG.CreateTree(0, EdmGetCmdFlags.Egcf_Nothing)  'Egcf_SkipExisting)
    Call BG.GetFiles(0, Nothing)

End Function


Grüße, Jens

(Edit: Signatur aktualisiert)

[Diese Nachricht wurde von CAD-Maler am 04. Jun. 2024 editiert.]

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

Mutaz Yunan
Mitglied
Konstrukteur


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

Beiträge: 26
Registriert: 07.06.2017

erstellt am: 03. Jun. 2024 08:04    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

Vielen Dank für die Antwort, sie hat mir viel geholfen

------------------
Mutaz Yunan

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)2024 CAD.de | Impressum | Datenschutz