Eksportowanie plików PDF o zmienionych nazwach do odpowiedniego folderu

Cze wszystkim

Nie znalazłem żadnych podobnych postów na forum, więc pozwalam sobie je opublikować.

Nie mając żadnych umiejętności w VBA, znalazłem w Internecie makro eksportu PDF i chcę je zmodyfikować.

Obecnie automatycznie zapisuje instalację jako plik PDF w folderze, w którym znajduje się plik. Nasze pliki MEP znajdują się w bibliotece w sieci i noszą nazwę "902xxxx"

Potrzebowałbym 2 dodatkowych funkcji:

  • Zwiększ nowy plik PDF z planem pomieszczenia na początku nazwy.
    = "plan pokoju 902xxxx"

  • Zapisz plik PDF w lokalizacji innej niż lokalizacja w instalacji instalacji: pliki PDF są przechowywane w innym katalogu i podfolderach o nazwie "902xx", ale w tej samej sieci.

Przykład:

Mam plan "9021325" na U: Studia

Chcę go zapisać z makrem w formacie PDF, aby trafiły do folderu U: Dosfab / 90213, zmieniając nazwę na "plan pokoju 9021325"

Poniżej znajduje się makro:

Dim swApp As Object

Przyciemnij część jako obiekt

Dim boolstatus As Boolean

Dim longstatus As Long, longwarnings As Long

Przyciemnij FeatureData jako obiekt

Przyciemnij element jako obiekt

Przyciemnij komponent jako obiekt

Sub main()

Ustaw swApp = Application.SldWorks

Ustaw część = swApp.ActiveDoc

Ścieżka = Part.GetPathName

Part.SaveAs2 Left(Path, (Len(Path) - 6)) & " PDF ", 0, True, False

Ustaw część = Nic

Ścieżka swApp.CloseDoc

Koniec subwoofera

Celem jest skrócenie czasu poświęcanego na nadpisywanie plików PDF i znajdowanie ich w podfolderach powiązanych z ich nazwą.

Nie wiem, czy jest to łatwe do zrobienia.

Witam @Tom_VITRE i witam.

Wyszukiwanie na tym forum nie jest idealne... a jednak po prostu pisząc " PDF " otrzymujemy kilka interesujących wyników.
którego dyskusja:

A nawet lepiej:

Ciekawa ze względu na swoją dydaktyczną stronę.
@sbadenis oferuje dobrze skomentowane makro, które powinieneś być w stanie zmodyfikować bez większych trudności: (Oto kopia kodu).

' On définit les variables nécessaires
Dim swApp As Object
Dim swModel As SldWorks.ModelDoc2
Dim Path As String
Dim PathDesktop As String
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim swExportPDFData As SldWorks.ExportPdfData
Dim nFileName As String
Dim nFileName2 As String
Dim FileName As String
Dim boolstatus As Boolean
Dim lErrors As Long
Dim lWarnings As Long

'Dim lgFichier As Integer

Sub main()
' On se raccroche à Solidworks
Set swApp = Application.SldWorks

' On récupère le document actif dans Solidworks
Set swModel = swApp.ActiveDoc

' On vérifie qu'un document est bien ouvert dans Solidworks
If swModel Is Nothing Then
    MsgBox "Un document doit être actif dans Solidworks.", vbCritical
    End
End If

' On vérifie que le document ouvert dans Solidworks est un plan
If swModel.GetType <> swDocDRAWING Then
    MsgBox "Le document actif dans Solidworks doit être un plan.", vbCritical
    End
End If

' On vérifie que le plan ouvert dans Solidworks est bien enregistré
If swModel.GetPathName = "" Then
    swModel.Save
End If

' On récupère le chemin du dossier d'enregistrement du plan
Path = swModel.GetPathName

    
'on récupère le chemin complet sans le nom de fichier
FilePath = Left(Path, InStrRev(Path, "\"))
'Debug.Print "Filepath:" + Filepath
    
        
'on récupère le nom du fichier sans l'extension
FileName = Mid(Path, Len(FilePath) + 1, Len(Path) - (7 + Len(FilePath)))
' on affiche la variable dans la fenêtre Exécution
Debug.Print "FileName=" & FileName

' on affiche la variable dans la fenêtre Exécution
Debug.Print "Path=" & Path
lgFichier = InStrRev(Path, "\", -1, vbTextCompare) - 1
If lgFichier > 0 Then
    Path = Left(Path, lgFichier)
End If

' On récupère le chemin du bureau Windows
PathDesktop = Environ("USERPROFILE") & "\Desktop"
' on affiche la variable dans la fenêtre Exécution
Debug.Print "PathDesktop=" & PathDesktop

' On définit les paramètres d'export en PDF
Set swModelDocExt = swModel.Extension
Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.ViewPdfAfterSaving = False

' On définit le chemin et le nom du premier fichier pdf à créer
'nFileName = Left(Path, Len(Path) - 6) & "PDF" 'Retrait de l'extension SW en gardant le point et ajout PDF
nFileName = FilePath & FileName & ".pdf"

' on affiche la variable dans la fenêtre Exécution
Debug.Print "nFileName=" & nFileName
' On sauvegarde le premier fichier pdf
boolstatus = swModelDocExt.SaveAs(nFileName, 0, 0, swExportPDFData, lErrors, lWarnings)

' On définit le chemin et le nom du deuxième fichier pdf à créer
'nFileName2 = PathDesktop & Left(nFileName2, Len(nFileName2) - 6) & "PDF"
nFileName2 = PathDesktop & "\" & FileName & ".pdf"
' on affiche la variable dans la fenêtre Exécution
Debug.Print "nFileName2=" & nFileName2
' On sauvegarde le deuxième fichier pdf
boolstatus = swModelDocExt.SaveAs(nFileName2, 0, 0, swExportPDFData, lErrors, lWarnings)

End Sub

Pozdrowienia.

4 polubienia

Dziękuję za odpowiedź, poświęcę trochę czasu, aby się jej przyjrzeć i dostosować ją do moich ustawień

1 polubienie