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