Export des Makromodi-Pfads nach Baugruppenpfad

Hallo

Ich habe ein kleines Problem, wenn ich versuche, den Pfad der Exportdatei in einem Makro zu ändern:

Die zu ändernden Zeilen lauten wie folgt:

Set FileList = fso.CreateTextFile("C:\Temp\Exclu.txt", 8, -2)

Shell "notepad.exe ""C:\Temp\Exclu.txt""", vbNormalFocus

Ich möchte den Pfad meiner Assembly anstelle von C:\Temp abrufen

Hier ist mein nicht-funktionaler Code für die Basis:

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set Assembly = swApp.ActiveDoc
Set myAsy = Assembly



    '**********Chemin d'export MEP**********
    '*******Récup chemin existant***********

    sOutputFolder = Left(swModel.GetPathName(), Len(swModel.GetPathName()) - 7)
    sOutputFile = sOutputFolder & "\Exclu.txt"
    Debug.Print sOutputFile

Set fso = CreateObject("Scripting.FileSystemObject")


'Set FileList = fso.CreateTextFile("C:\Temp\Exclu.txt", 8, -2)

Set FileList = fso.CreateTextFile(sOutputFile, 8, -2)

    
myCmps = myAsy.GetComponents(False)

For i = 0 To UBound(myCmps)
Set myCmp = myCmps(i)
If myCmp.ExcludeFromBOM Then
FileList.Write myCmp.Name2 & vbCrLf

End If
Next i

FileList.Close

Shell "notepad.exe ""C:\Temp\Exclu.txt""", vbNormalFocus


End Sub

Falls jemand eine Idee hat, ich habe eine Stunde lang für etwas wahrscheinlich sehr Dummes getrocknet...

Hallo

Folgendes sollte funktionieren:

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set Assembly = swApp.ActiveDoc
Set myAsy = Assembly

    '**********Chemin d'export MEP**********
    '*******Récup chemin existant***********

    sOutputFolder = Left(swModel.GetPathName(), Len(swModel.GetPathName()) - 7)
    'soutputfile = sOutputFolder & "\Exclu.txt"
    soutputfile = sOutputFolder & ".txt"
    Debug.Print soutputfile

Set fso = CreateObject("Scripting.FileSystemObject")

'Set FileList = fso.CreateTextFile("C:\Temp\Exclu.txt", 8, -2)

Set FileList = fso.CreateTextFile(soutputfile, 8, -2)
    
myCmps = myAsy.GetComponents(False)

For i = 0 To UBound(myCmps)
Set myCmp = myCmps(i)
If myCmp.ExcludeFromBOM Then
FileList.Write myCmp.Name2 & vbCrLf

End If
Next i

FileList.Close

'Shell "notepad.exe ""C:\Temp\Exclu.txt""", vbNormalFocus
Shell "notepad.exe """ & soutputfile & """", vbNormalFocus

End Sub

Herzliche Grüße

1 „Gefällt mir“

Es funktioniert, aber es fehlt ein Teil (der Dateiname nimmt das letzte Verzeichnis anstelle von exclu.txt an.

Es scheint, dass ihm das letzte \ nicht gefällt, wenn Sie \Excluded vor dem .txt hinzufügen

Ich war derjenige, der die Erstellung der Datei mit dem Namen "exclu.txt" ausgelöst hat, es kam mir seltsam vor, aber es liegt daran, dass ich die Frage ein wenig falsch interpretiert hatte.

Also, ja, es möchte die Datei "exclu.txt" nicht dort erstellen, wo Sie möchten, weil der Ordner nicht existiert, also müssen Sie ihn vorher erstellen, wenn er nicht existiert:

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set Assembly = swApp.ActiveDoc
Set myAsy = Assembly

    '**********Chemin d'export MEP**********
    '*******Récup chemin existant***********

    soutputFolder = Left(swModel.GetPathName(), Len(swModel.GetPathName()) - 7)
    soutputfile = soutputFolder & "\Exclu.txt"
    Debug.Print soutputfile

If Dir(soutputFolder) = "" Then
    MkDir soutputFolder
End If

Set fso = CreateObject("Scripting.FileSystemObject")

'Set FileList = fso.CreateTextFile("C:\Temp\Exclu.txt", 8, -2)

Set FileList = fso.CreateTextFile(soutputfile, 8, -2)
    
myCmps = myAsy.GetComponents(False)

For i = 0 To UBound(myCmps)
Set myCmp = myCmps(i)
If myCmp.ExcludeFromBOM Then
FileList.Write myCmp.Name2 & vbCrLf

End If
Next i

FileList.Close

'Shell "notepad.exe ""C:\Temp\Exclu.txt""", vbNormalFocus
Shell "notepad.exe """ & soutputfile & """", vbNormalFocus

End Sub

 

Hoppla, ich habe das zweite Argument in der Zeile vergessen:

Wenn Dir(soutputFolder) = "" dann

Er erhält folgende Fassung:

if Dir(soutputFolder, vbDirectory) = "" dann

Herzliche Grüße

Hallo

Vielen Dank, d.roger , Ihre Lösung, die perfekt funktioniert, hat es mir ermöglicht, meinen Fehler zu finden.

Ich wollte jedoch nur den Pfad zum Assemblyordner abrufen und in diesem Ordner meine Exclu.txt Datei speichern.

Es war die Erstellung der Mappe, die mir den Floh ins Ohr gesteckt hat, da die Mappe meiner Montage notwendigerweise schon existiert!

 

Trotzdem vielen Dank für den Code, der mir anderes Wissen bringt. Und ich wähle Ihre Antwort immer noch als die beste, weil Sie meine Anfrage beantwortet haben, die einfach überhaupt nicht klar war.

 

 

Sub main()

Dim swModel                     As SldWorks.ModelDoc2

Dim swPart                      As SldWorks.PartDoc

Dim bRet                        As Boolean

Dim MyPath                      As String

Dim MyFolder                    As String

 

Set swApp = Application.SldWorks
Set Assembly = swApp.ActiveDoc
Set myAsy = Assembly
Set swModel = swApp.ActiveDoc

 



'**********Chemin d'export MEP**********
'*******Récup chemin existant***********

MyFolder = CurDir$
Debug.Print "Current Folder = " & MyFolder

soutputfile = MyFolder & "\Exclu.txt"
Debug.Print soutputfile



Set fso = CreateObject("Scripting.FileSystemObject")

'On créer le fichier .txt

Set FileList = fso.CreateTextFile(soutputfile, 8, -2)

    
myCmps = myAsy.GetComponents(False)


For i = 0 To UBound(myCmps)
Set myCmp = myCmps(i)

If myCmp.ExcludeFromBOM Then
FileList.Write myCmp.Name2 & vbCrLf
End If
Next i

FileList.Close

'On ouvre le fichier avec le bloc note
Shell "notepad.exe """ & soutputfile & """", vbNormalFocus

End Sub