How to Replace Spot Colors Across Files in CorelDRAW

Replacing a specific spot color across multiple CorelDRAW documents cannot be done natively with a single click, as the built-in Find and Replace tool only functions within the currently active document. To perform a global replacement across an entire batch of files, you must use CorelDRAW’s VBA (Visual Basic for Applications) macro engine to automate opening each file, swapping the target spot color with the new one, and saving the changes.

Step 1: Open the Visual Basic for Applications Editor

  1. Launch CorelDRAW.
  2. Press Alt + F11 (or navigate to Tools > Scripts > Script Editor) to open the VBA Editor window.
  3. In the Project Explorer panel on the left, right-click on your GlobalMacros project.
  4. Select Insert > Module to create a fresh module for the batch script.

Step 2: Add the Batch Replacement Script

Paste the following macro code into the newly created module window. Make sure to update the folder path, file extension, and spot color names to match your project needs.

Sub BatchReplaceSpotColor()
    Dim folderPath As String
    Dim fileName As String
    Dim doc As Document
    Dim oldColorName As String
    Dim newColorName As String
    Dim s As Shape
    
    ' Set target directory and color names
    folderPath = "C:\Your\Folder\Path\"  ' Include the trailing backslash
    oldColorName = "PANTONE 185 C"        ' Existing spot color name
    newColorName = "PANTONE 286 C"        ' Replacement spot color name
    
    ' Prevent screen flickering and optimize processing speed
    Optimization = True
    
    fileName = Dir(folderPath & "*.cdr")
    
    Do While fileName <> ""
        Set doc = OpenDocument(folderPath & fileName)
        
        ' Process each shape in the document
        For Each s In doc.ActivePage.Shapes.All
            ' Check and replace outline color
            If s.Outline.Type = cdrOutline Then
                If s.Outline.Color.Type = cdrColorSpot Then
                    If UCase(s.Outline.Color.SpotColorName) = UCase(oldColorName) Then
                        s.Outline.Color.SetSpotColor cdrPANTONECoated, newColorName, 100
                    End If
                End If
            End If
            
            ' Check and replace uniform fill color
            If s.Fill.Type = cdrUniformFill Then
                If s.Fill.UniformColor.Type = cdrColorSpot Then
                    If UCase(s.Fill.UniformColor.SpotColorName) = UCase(oldColorName) Then
                        s.Fill.UniformColor.SetSpotColor cdrPANTONECoated, newColorName, 100
                    End If
                End If
            End If
        Next s
        
        ' Save and close the updated document
        doc.Save
        doc.Close
        
        fileName = Dir()
    Loop
    
    Optimization = False
    EventsEnabled = True
    MsgBox "Batch replacement complete!", vbInformation
End Sub

Step 3: Run the Macro

  1. Ensure all files you intend to process are closed in CorelDRAW. It is strongly recommended to create a backup copy of your folder before proceeding.
  2. Place your cursor inside the Sub BatchReplaceSpotColor() routine within the VBA Editor.
  3. Press F5 or click the green Run Sub/UserForm button on the toolbar.
  4. CorelDRAW will iterate through each .cdr file in the directory, scan shapes for the specified outline and fill spot colors, replace them with the new palette entry, and overwrite the file.
  5. A confirmation message box will appear once all documents in the target folder have been processed.