Macro-X_T verbeteren om een map te maken die zo onbestaande is op Solidworks?

Ik heb al een macro (die ik als bijlage bijvoeg) waarmee ik een onderdeel of assemblage in X_T kan exporteren in een submap "X_T FILES".

Ik zou dat nodig hebben als de map "X_T FILES" niet bestaat, het kan er een maken om het geëxporteerde bestand erin in te voegen, hoe moet ik dit programmeren?

Het huidige programma:

 

Sub Sauvegarde_X_T()


Dim swApp als object
Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Dim Locatie Als String
Dim Locatie_aangepast als snaar
OpenDoc dimmen als object
Dim Extensie_nieuw als snaar
Dim Extensie_oud als snaar
Dim retval als snaar
Dim Naam Als String
Dim Naam_aangepast als snaar

 

Stel swApp = CreateObject("SldWorks.Application") in
Stel swModel = swApp.ActiveDoc in
Stel OpenDoc in = swApp.ActiveDoc()

Extensie_oud = ". SLDASME"
Extensie_nieuw = ". X_T"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Links(Locatie, Len(Locatie) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = Dir$(Locatie)
Naam_aangepast = Links(Naam, Len(Naam) - 7)
Titel = OpenDoc.GetTitle
Titel = Links(Titel, (Len(Titel)))


    
Deel instellen = swApp.ActiveDoc

Dim FilePath als tekenreeks, Bestandsnaam als tekenreeks

FilePath = Links(Locatie, InStrRev(Locatie, "\"))
MsgBox FilePath & "X_T FILES" & Naam_aangepast & Extensie_nieuw
longstatus = Part.SaveAs3(FilePath & "FILES X_T\" & Naam_aangepast & Extensie_nieuw, 0, 0)

Einde Sub


save_x_t_-_fichiers_x_t.zip

Zie deze pagina

http://www.beta.lynkoa.com/forum/3d/macro-enregistrement-en-pdf-dans-un-dossier-specifique

Een macro @ Jfaradon die in theorie iemand is die weet waar hij het over heeft
 
kan het begin zijn van de oriëntatie van een fragment
 
@+ ;-))
 
 
 

Hallo, we moeten na deze regel toevoegen:

FilePath = Links(Locatie, InStrRev(Locatie, "\"))

Als dir$(FilePath) ="" dan

Mkdir FilePath

Einde als

@ PL gewoon toe te voegen wat, omdat je zegt dat je gewoon toe te voegen na deze regel, maar er is niets

@+

1 like
Ja GT sorry dat het antwoord te snel ging, ik heb daarna bewerkt.
1 like

en ja @ PL het probleem is er

de heruitgave van de antwoorden zonder enige heruitgave ref

en toch x keer aan onze CM gevraagd

In de mate van het mogelijke is het noodzakelijk om te voorkomen dat een antwoord opnieuw wordt gepubliceerd

Om een antwoord te geven

@+ ;-))

@ PL als je kijkt naar de communicatiedraad van de antwoorden

Uw opnieuw bewerkte antwoord blijft dezelfde tijd behouden

Dus wat de tijd betreft, kwam mijn antwoord daarna en toch is dat niet het geval

dus onbegrip van het lezen van de antwoorden op deze communicatiedraad

Het begrip heruitgifte moet worden aangemeld voor meer duidelijkheid van de communicatiedraad

En dit is vaak het geval

welke van + wordt vaak beantwoord op een vraag zonder op het eerste gezicht een antwoord

En als je het publiceert, ben je altijd de eerste die het publiceert

Maar als we een refresh doen, realiseren we ons dat dit niet zo is en dat een persoon al heeft geantwoord

Het ongemak is er het vaakst

@+ ;-))

 

@+ ;-))

Het werkt niet...

Er wordt geen bestand gemaakt als het niet bestaat.

Probeer met dir$ in plaats van dir

Ik begrijp het niet echt ...

Ik moet geen dingen toevoegen tussen de ""s?

Zoals de naam van de map die het zou moeten maken? Omdat ik niet begrijp hoe het programma de map met de juiste naam zal maken?

 

Als dir$(FilePath) ="" dan

Mkdir FilePath

Einde als

Hallo

De MkDir-functie accepteert het maken van een andere opslagplaats op een andere schijf dan die waarop de macro wordt uitgevoerd.

Geef de voorkeur aan de methode: My.Computer.FileSystem.CreateDirectory

Lees hier meer: https://msdn.microsoft.com/fr-fr/library/2wwkaadb%28v=vs.90%29.aspx

En werkt dat in plaats daarvan?

Als Dir$(FILEPATH, vbDirectory) = "" dan
    Shell ("cmd /c mkdir """ & FILEPATH & """")
Einde als

Het werkt ook niet. Ik denk dat ik het idee ga opgeven.

Als iemand nog een suggestie heeft, ben ik altijd geïnteresseerd.

Toch dank aan degenen die de tijd hebben genomen om te zoeken.

Ik heb dit zojuist met succes getest:

Sub hoofd()
   
Dim swApp als object, deel als object, OpenDoc als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long
Dim Locatie As String, Locatie_aangepast As String, Extensie_nieuw As String, Extensie_oud As String, retval As String
Dim Naam als tekenreeks, Naam_aangepast als tekenreeks, FilePath als tekenreeks, Bestandsnaam als tekenreeks, FolderPath als tekenreeks

Stel swApp = CreateObject("SldWorks.Application") in
Stel swModel = swApp.ActiveDoc in
Stel OpenDoc in = swApp.ActiveDoc()

Extensie_oud = ". SLDASME"
Extensie_nieuw = ". X_T"
Locatie = OpenDoc.GetPathName
Locatie_aangepast = Links(Locatie, Len(Locatie) - 7)
retval = Dir$(Locatie_aangepast & Extensie_oud)
Naam = Dir$(Locatie)
Naam_aangepast = Links(Naam, Len(Naam) - 7)
Titel = OpenDoc.GetTitle
Titel = Links(Titel, (Len(Titel)))
    
Deel instellen = swApp.ActiveDoc

FilePath = Links(Locatie, InStrRev(Locatie, "\"))
FolderPath = FilePath & "X_T BESTANDEN"

Als Dir(FilePath, vbDirectory + vbHidden) <> "" dan
        Als Dir(FolderPath, vbDirectory + vbHidden) = "" Dan _
            MkDir FolderPath
Einde als

longstatus = Part.SaveAs3(FilePath & "FILES X_T\" & Naam_aangepast & Extensie_nieuw, 0, 0)

Einde Sub

 

Het codefragment is afkomstig van: http://excel.developpez.com/faq/?page=FichiersDir#MkDir

Het www.developpez.com forum is een zeer goed forum waar je veel informatie en serieuze deelnemers kunt vinden. Ik raad het ten zeerste aan.


sauvegarder_xt.swp

Ik heb net getest de macro die je in, het bugs en het geeft me dit:


sans_titre.jpg

Er is geen reden waarom het niet zou werken! Wat zijn de fouten bij het testen van mijn code?

En in het laatste voorbeeld lijkt het erop dat je geen bestand hebt geopend in SolidWorks.

 

1 like

Heb je een open ruimte?

Het is oké dat ik het probleem heb opgelost, vond ik op een forum:

"dit is eigenlijk een vrij veel voorkomende fout, maar het heeft te maken met een ontbrekende referentie in het VBA-project (het gebeurt als de werk/thuis-versies anders of afwezig zijn)

Tools>Referenties in de VBE-editor : schakel de ontbrekende referenties uit en/of vervang ze door de beschikbare versies."

 

Ducou doet het werk!!!!!!!!!!!!

Bedankt jongens!

1 like