0 Replies Latest reply on May 5, 2018 5:33 AM by Brett Tighe

    Pack and Go Macro - Overwrite = False

    Brett Tighe

      I need some help with the simple macro of pack and going. Currently have it running in excel where I can change what assemblies get pack and go'ed and the prefix. Everything works great until two different assemblies get pack and go'ed into the same folder with parts of the same name. How do I get the "Confirm File Replace" prompt into VBA to set it to False?

      Code below


      Option Explicit



      Dim swApp As SldWorks.SldWorks

      Dim swModelDoc As SldWorks.ModelDoc2

      Dim swModelDocExt As SldWorks.ModelDocExtension

      Dim swPackAndGo As SldWorks.PackAndGo

      Dim openFile As String

      Dim pgFileNames As Variant

      Dim pgFileStatus As Variant

      Dim pgGetFileNames As Variant

      Dim pgDocumentStatus As Variant

      Dim status As Boolean

      Dim warnings As Long

      Dim errors As Long

      Dim i As Long

      Dim namesCount As Long

      Dim myPath As String

      Dim statuses As Variant

      Sub main()


      Set swApp = CreateObject("SldWorks.Application")


      ' Open assembly

      openFile = Range("B2")

      Set swModelDoc = swApp.OpenDoc6(openFile, swDocASSEMBLY, swOpenDocOptions_Silent, "", errors, warnings)

      Set swModelDocExt = swModelDoc.Extension


      ' Get Pack and Go object

      Debug.Print "Pack and Go"

      Set swPackAndGo = swModelDocExt.GetPackAndGo


      ' Get number of documents in assembly

      namesCount = swPackAndGo.GetDocumentNamesCount

      Debug.Print "  Number of model documents: " & namesCount


      ' Include any drawings, SOLIDWORKS Simulation results, and SOLIDWORKS Toolbox components

      swPackAndGo.IncludeDrawings = True

      Debug.Print "  Include drawings: " & swPackAndGo.IncludeDrawings

      swPackAndGo.IncludeSimulationResults = True

      Debug.Print "  Include SOLIDWORKS Simulation results: " & swPackAndGo.IncludeSimulationResults

      swPackAndGo.IncludeToolboxComponents = True

      Debug.Print "  Include SOLIDWORKS Toolbox components: " & swPackAndGo.IncludeToolboxComponents


      ' Get current paths and filenames of the assembly's documents

      status = swPackAndGo.GetDocumentNames(pgFileNames)

      Debug.Print ""

      Debug.Print "  Current path and filenames: "

      If (Not (IsEmpty(pgFileNames))) Then

          For i = 0 To UBound(pgFileNames)

              Debug.Print "    The path and filename is: " & pgFileNames(i)

          Next i

      End If


      ' Get current save-to paths and filenames of the assembly's documents

      status = swPackAndGo.GetDocumentSaveToNames(pgFileNames, pgFileStatus)

      Debug.Print ""

      Debug.Print "  Current default save-to filenames: "

      If (Not (IsEmpty(pgFileNames))) Then

          For i = 0 To UBound(pgFileNames)

              Debug.Print "   The path and filename is: " & pgFileNames(i)

          Next i

      End If


      ' Set folder where to save the files

      myPath = Range("B3")

      status = swPackAndGo.SetSaveToName(True, myPath)



      ' Flatten the Pack and Go folder structure; save all files to the root directory

      swPackAndGo.FlattenToSingleFolder = True



      ' Add a prefix and suffix to the new Pack and Go filenames

      swPackAndGo.AddPrefix = Range("B1")

      swPackAndGo.AddSuffix = ""

      ' Verify document paths and filenames after adding prefix and suffix

      ReDim pgGetFileNames(namesCount - 1)

      ReDim pgDocumentStatus(namesCount - 1)

      status = swPackAndGo.GetDocumentSaveToNames(pgGetFileNames, pgDocumentStatus)

      Debug.Print ""

      Debug.Print "  My Pack and Go path and filenames after adding prefix and suffix: "

      For i = 0 To (namesCount - 1)

           Debug.Print "    My path and filename is: " & pgGetFileNames(i)

      Next i


      ' Pack and Go


      statuses = swModelDocExt.SavePackAndGo(swPackAndGo)




      ' Close file

      swApp.CloseDoc (Range("B2"))



      End Sub