Eksport ścieżki modyfikacji makra według ścieżki zespołu

Witam

Mam mały problem przy próbie zmiany ścieżki do pliku eksportu w makrze:

Wiersze, które mają zostać zmienione, są następujące:

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

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

Chciałbym pobrać ścieżkę mojego zestawu zamiast C:\Temp

Oto mój niefunkcjonalny kod dla bazy:

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

Jeśli ktoś ma pomysł, suszyłem się przez godzinę na coś chyba bardzo głupiego...

Witam

Oto, co powinno zadziałać:

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

Pozdrowienia

1 polubienie

Działa, ale brakuje w nim części (nazwa pliku zajmuje ostatni katalog zamiast exclu.txt.

Wygląda na to, że nie podoba mu się ostatni \, gdy dodasz \Excluded przed .txt

Byłem tym, który uruchomił tworzenie pliku o nazwie "exclu.txt", wydawało mi się to dziwne, ale to dlatego, że trochę źle zinterpretowałem pytanie.

Więc tak, nie chce tworzyć pliku "exclu.txt" tam, gdzie chcesz, ponieważ folder nie istnieje, więc musisz go utworzyć wcześniej, jeśli nie istnieje:

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

 

Ups, zapomniałem o drugim argumencie na linii:

Jeśli Dir(soutputFolder) = "" Następnie

Otrzymuje on brzmienie:

Jeśli Dir(soutputFolder, vbDirectory) = "" Następnie

Pozdrowienia

Witam

Dziękuję d.roger twoje rozwiązanie, które działa idealnie, pozwoliło mi znaleźć mój błąd.

Chciałem jednak tylko pobrać ścieżkę do folderu zestawu i w tym folderze zapisać swój plik Exclu.txt.

To właśnie stworzenie folderu sprawiło, że pchła wpadła mi do ucha, ponieważ teczka mojego zespołu z pewnością już istnieje!

 

W każdym razie dziękuję za kod, który przynosi mi inną wiedzę. I nadal wybieram Twoją odpowiedź jako najlepszą, ponieważ odpowiedziałeś na moją prośbę, która po prostu nie była wcale jasna.

 

 

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