Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Makro für Datei speichern unter...

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
  
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


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

Beiträge: 35
Registriert: 17.10.2007

SW2010 SP4.0

erstellt am: 16. Sep. 2010 19:16    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 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


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

Beiträge: 35
Registriert: 17.10.2007

SW2010 SP4.0

erstellt am: 16. Sep. 2010 19:32    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

... so, habe doch noch mal was probiert!
Kann so der Code des SW-Makros aussehen:

Code:

Dim swApp As Object
Dim Part As Object

Dim 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


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

Beiträge: 326
Registriert: 16.02.2009

erstellt am: 17. Sep. 2010 07:42    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 Polytyper 10 Unities + Antwort hilfreich

Hallo,
ich kenn mich mit Macro programmierung nicht aus, aber vielleicht hilft dir das Macro 36 weiter.
HTH 

------------------
Gruß
Harald
____________________
Ama et fac quod vis!

Den einen Tag verliert man und den nächsten Tag gewinnt ein anderer!

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



Anzeige:Infos zum Werbeplatz >>

GeoVisual Civil Engineer CAD APP für 3D, Tiefbau, AEC - Architektur-, Ingenieur- und Bauwesen

Die benutzerfreundliche Softwarelösung zur Visualisierung von Infrastrukturplanungen

HenryV
Mitglied
Konstrukteur, Engineering


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

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 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 Polytyper 10 Unities + Antwort hilfreich

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 >>)

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