| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: Makro für Datei speichern unter... (12480 mal gelesen)
|
Polytyper Mitglied CNC Programmierer

 Beiträge: 35 Registriert: 17.10.2007 SW2010 SP4.0
|
erstellt am: 16. Sep. 2010 19:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo erstmal... Ich muss (leider) regelmässig SW-Baugruppen (*.sldasm) als Parasolid (*.x_t) abspeichern. Diese repetitive Aufgabe möchte ich mit einem VBA-Makro lösen. Da ich auf der Arbeit nicht so Zeit frei machen kann um zu testen habe ich mir zu Hause etwas gebastlet. Leider habe ich privat kein SW auf dem Rechner, habe also mal in VBA-Word ein Makro erstellt. Dieses Makro macht mit der aktuellen Word-Datei genau das, was ich in SW mit der aktuellen Baugruppe machen möchte. Was muss ich nun beim Umschreiben für SW beachten? Ist aktives Dokument in SW swApp.ActiveDoc oder swModel.GetTitel? VBA Word Code
Code:
Sub PARA()Dim Dateiname As String Dim DateinameAnfang As String Dim Dateiordner As String Dim Dateipfad As String Dateiname = Left(ActiveDocument.Name, 6) 'swModel.GetTitel DateinameAnfang = Left(ActiveDocument.Name, 2) 'swModel.GetTitel If DateinameAnfang = "H2" Then Dateiordner = "Hermle" ElseIf DateinameAnfang = "D6" Then Dateiordner = "DMU60" ElseIf DateinameAnfang = "D8" Then Dateiordner = "DMU80" Else: MsgBox "Dateiname für automatisches Speichern nicht vorgesehen!" End End If Dateipfad = ActiveDocument.Path & "\" & ActiveDocument.Name ActiveDocument.SaveAs FileName:="C:\tmp\" & Dateiordner & "\" & Dateiname & ".docx" End Sub
Besten Dank für jeden Tipp im Voraus... mfg Polytyper
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Polytyper Mitglied CNC Programmierer

 Beiträge: 35 Registriert: 17.10.2007 SW2010 SP4.0
|
erstellt am: 16. Sep. 2010 19:32 <-- editieren / zitieren --> Unities abgeben:         
... so, habe doch noch mal was probiert! Kann so der Code des SW-Makros aussehen: Code:
Dim swApp As Object Dim Part As ObjectDim Dateiname As String Dim DateinameAnfang As String Dim Dateiordner As String Sub main() Set swApp = _ Application.SldWorks Set Part = swApp.ActiveDoc Dateiname = Left(swApp.ActiveDoc, 6) 'Dateiname ohne Endung abfragen DateinameAnfang = Left(swApp.ActiveDoc, 2) 'ersten 2 Zeichen der aktuellen SW-Datei abfragen 'Dateiorder zum Speichern zuweisen If DateinameAnfang = "H2" Then Dateiordner = "Hermle" ElseIf DateinameAnfang = "D6" Then Dateiordner = "DMU60" ElseIf DateinameAnfang = "D8" Then Dateiordner = "DMU80" Else: MsgBox "Dateiname für automatisches Speichern nicht vorgesehen!" End End If saveFileName = "C:\tmp\" + Dateiordner + "\" + Dateiname + ".x_t" 'Datei neu als Parasolid abspeichern Part.SaveAs2 saveFileName, 0, True, False End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
metz Mitglied Techniker Maschinenbau
 
 Beiträge: 326 Registriert: 16.02.2009
|
erstellt am: 17. Sep. 2010 07:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Polytyper
|

| |
HenryV Mitglied Konstrukteur, Engineering
  
 Beiträge: 817 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 17. Sep. 2010 08:45 <-- editieren / zitieren --> Unities abgeben:          Nur für Polytyper
Hallo Polytyper Dein Makro (2.Version) sieht fast gut aus. Diese Zeilen verstehe ich nicht. Was willst du damit machen?
Code: Dateiname = Left(ActiveDocument.Name, 6) 'swModel.GetTitel DateinameAnfang = Left(ActiveDocument.Name, 2) 'swModel.GetTitel
Falls du den Dateinamen ohne Endung habe willst, sieht der Code so aus.
Code: ' Dokumentpfad der aktuellen SW-Datei Dateiname = Part.GetPathName ' Pfad abschneiden Dateiname = Mid(Dateiname, InStrRev(Dateiname, "\") + 1, Len(Dateiname)) ' Extension abschneiden Dateiname = Left(Dateiname, Len(Dateiname) - 7)DateinameAnfang = Left(Dateiname, 2) 'ersten 2 Zeichen der aktuellen SW-Datei abfragen
Die Variable saveFileName ist nicht deklariert.
Code: Dim saveFileName as String
Der "SaveAs"-Befehl funktioniert nur, wenn der Dateipfad existiert. Deshalb würde ich noch so was einbauen.
Code: 'Pfad erstellen, wenn nicht vorhanden If (Dir("C:\tmp\", vbDirectory) = "") Then MkDir ("C:\tmp\") End If If (Dir("C:\tmp\" + Dateiordner, vbDirectory) = "") Then MkDir ("C:\tmp\" + Dateiordner) End If
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |