| | | 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
Beiträge: 26 Registriert: 07.06.2017
|
erstellt am: 28. Mai. 2024 10:12 <-- editieren / zitieren --> Unities abgeben:
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))
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 / zitieren --> Unities abgeben: Nur für Mutaz Yunan
|
CAD-Maler Mitglied Konstrukteur / CAD-Admin / Mädchen für alles
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 / zitieren --> Unities abgeben: Nur für Mutaz Yunan
Müsste so funktionieren: Code: Option ExplicitDim 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
Beiträge: 26 Registriert: 07.06.2017
|
erstellt am: 03. Jun. 2024 08:04 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|