Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Beim Speichern individueller Pfad zugreifen VBA

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
  
AMB 2024
Autor Thema:  Beim Speichern individueller Pfad zugreifen VBA (1628 / mal gelesen)
4kspeed
Mitglied



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

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 24. Aug. 2017 08:40    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, mit meiner Beispiel Makro speichere ich die Zeichnung bisher in ein bestimmtes Verzeichniss (C:\Test) als pdf ab.

Code:
Dim swApp          As SldWorks.SldWorks
Dim swModel        As SldWorks.ModelDoc2
Dim swDraw          As SldWorks.DrawingDoc
Dim swCustProp      As CustomPropertyManager
Dim valOut          As String
Dim resolvedValOut  As String
Dim Filepath        As String
Dim FileName        As String

Sub main()

Set swApp = Application.SldWorks
Set swDraw = swApp.ActiveDoc

' Check to see if a drawing is loaded.

If (swDraw Is Nothing) Or (swDraw.GetType <> swDocDRAWING) Then

swApp.SendMsgToUser ("To be used for drawings only, Open a drawing first and then TRY!")

' If no model currently loaded, then exit
Exit Sub

End If

Set swView = swDraw.GetFirstView
Set swView = swView.GetNextView
Set swModel = swView.ReferencedDocument
Set Sheet = swApp.ActiveDoc.GetCurrentSheet


Set swCustProp = swModel.Extension.CustomPropertyManager("")

swCustProp.Get2 "PD-Nr.", valOut, resolvedValOut 'Change the custom property name here

Filepath = "C:\Test" ' Change File Path here
Filepath = Filepath + "\"

FileName = Left(swDraw.GetTitle, Len(swDraw.GetTitle) - 9)

swDraw.SaveAs (Filepath + FileName + resolvedValOut + ".pdf") 'Change the custom property text here

End Sub



In den Test Ordner habe ich folgende 3 Unter Ordner angelegt

01_Bestellung_Blech_Nr_0015600156

02_Bestellung_Rohr_Nr_00159

03_Bestellung_Stange_Nr_00186


Ziel soll es sein die pdf in einem Ordner abzuspeichern, die ständig umbenannt wird, nur die Nummer wird geändert (01_Bestellung_Blech_Nr_XXXXX)

Wie kann ich in VBA Makro sagen er soll die pdf in 01_Bestellung_Blech_Nr_ abspeichern egal welche Nr dahinten dran steht?

mit * funktionierts leider nicht

Code:
Filepath = "C:\Test\01_Bestellung_Blech_Nr_*" ' Change File Path here
Filepath = Filepath + "\"


was mache ich da falsch? 

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 24. Aug. 2017 09:41    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 4kspeed 10 Unities + Antwort hilfreich

ich glaub, du solltest mit dir den Pfad vervollständigen und dann weitermachen.
Syntax passt nicht aber ungefähr so:
filepath = dir (c:\...*)
dann noch "\" und den Dateinamen dranbasteln ...

Gruß, Christian

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

4kspeed
Mitglied



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

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 24. Aug. 2017 10:10    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 Christian,

den Dateinamen dran bastteln ist nicht mein Problem.
Ich will in unvollständigen Pfad abspeichern, somit müsste man jedes mal in Makro die Nr. ändern.

Vorgegeben ist nur ein Teil dieser Pfad C:\Test\01_Bestellung_Blech_Nr_

Mit dir () funktioniert nicht.

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 24. Aug. 2017 11:43    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 4kspeed 10 Unities + Antwort hilfreich

nach vba-hilfe würde ich meinen:
Filepath = Dir("C:\Test\01_Bestellung_Blech_Nr_*")
sollte den Pfad liefern ...
evtl muss noch dran, dass es ein Verzeichnis ist ...
probier doch mal
Filepath = Dir("C:\Test\01_Bestellung_Blech_Nr_*", vbDirectory)

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

HartmutT
Mitglied
Dipl.-Ing (TU) MB


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

Beiträge: 790
Registriert: 16.06.2006

SWX 2019 SP5.0
MaxxDB 2021.SP0.02 Linked Jan 18 2021 (64bit)

erstellt am: 24. Aug. 2017 14: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 Nur für 4kspeed 10 Unities + Antwort hilfreich

Hi Gemeinde!
Für mich riecht das nach einer sogenannten Erstbefüllung mit Laufwerk, Pfad und Dateiname, die individuell erweitert werden kann.
Dann schlage ich vor, geh so vor wie im Makro (bei Makromania) EXPORT_AS von Thomas Weith
Pathnamebox mit Erstbefüllung
Filenamebox mit Erstbefüllung
in einer Abfrage, die kann man dann individuell erweitern und ist flexibel in Pfad und Filenamen.
Good Luck, H.

------------------
Hartmut

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

4kspeed
Mitglied



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

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 25. Aug. 2017 08:25    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

@Christian_W
habs probiert, da passiert leider da nicht..

@HartmutT
ich kann den Makro nicht finden, was du mir vorschlägst,
wichtig ist es sollte aus jedem Fall kompatibel mit SW2016 sein

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 28. Aug. 2017 11:08    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 4kspeed 10 Unities + Antwort hilfreich

also bei mir geht
Filepath = Dir("C:\Test\01_*", vbDirectory) + "\"
debug.print Filepath

wenn das Verzeichnis schon da ist ...

Gruß, Christian

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 28. Aug. 2017 11:43    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 4kspeed 10 Unities + Antwort hilfreich

Sorry, Kleinigkeit übersehen.

Dir liefert nur den Unterverzeichnisnamen zurück, nicht den kompletten Pfad.
d.h. den musst du jedesmal noch zusammensetzen.

also müsste gehen:
vorpfad = "C:\Test\"
filepath = vorpfad + dir(vorpfad + "01*", vbDirectory) + "\"

Gruß, Christian

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

4kspeed
Mitglied



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

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 29. Aug. 2017 07:06    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

Klasse es geht! THX Christian!!!

Was ich jetzt noch festgestellt habe, er überschreibt die vorhandene pdf/dxf einfach. Kann VBA mir keine Rückmeldung geben falsch die pdf doch schon gibt (abbrechen ja/nein)? 

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 29. Aug. 2017 08:38    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 4kspeed 10 Unities + Antwort hilfreich

Hallo,

verwendest du in der SaveAs Method (IModelDocExtension) die Option swSaveAsOptions_Silent? Weil diese Unterdrückt meines Wissens u.a. diese Meldung, evtl. hier mal die Option swSaveAsOptions_Copy probieren.

Alternativ könntest du auch vorher einfach überprüfen ob die Datei vorhanden ist bevor du das Speichern durchführst.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 29. Aug. 2017 09:37    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 4kspeed 10 Unities + Antwort hilfreich

Zitat:
Kann VBA mir keine Rückmeldung geben falsch die pdf doch schon gibt (abbrechen ja/nein)?

entweder über die Optionen - siehe Bernds antwort
oder wieder mit "dir" ungefähr so
if not dir(fullpdfpathandfilename) = "" then
  umbenennen als backup irgendwie mit Index oder so ...
endif
saveas ...

Gruß, Christian

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

4kspeed
Mitglied



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

Beiträge: 91
Registriert: 27.10.2016

erstellt am: 01. Sep. 2017 13:19    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

Naja..
ich überprüfe vorher einfach nochmal nach ob die Dateien vorhanden sind.
Problem meine Codes werden einfach zu lang und unübersichtlich, das möchte ich verhindern... da VBA noch eine neue Welt für mich ist.

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