AnsweredAssumed Answered

Pack and Go Macro - Overwrite = False

Question asked by Brett Tighe on May 4, 2018

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