Using javascript posted here by Evermap, and copied below you can automatically transform annotations from one type in Adobe Acrobat to another type. It will not only allow you to convert highlights, underlined text, and crossed out text, but also to change from proposed redactions to any one of these annotations - but not vice versa.

In order to add the script to a new action in Acrobat, select the Action Wizard tool and then click on 'New Action', and choose 'Execute JavaScript' from the 'More Tools' drop down menu.

Click on 'Specify Settings' and enter the script in the editor. Set the type you want to find on the first highlighted line in the below screen grab, and the type you want to add in on the second line. If you want to reference crossed out text use the type, 'CrossOut'.

Uncheck the 'Prompt User' box, and then add the Save step to the action, so you will not be prompted to save each file when the action runs.

After saving and running the action, you can process multiple files by selecting the options in the drop down menu to add files or an entire folder.

The script can be used to convert multiple proposed redactions in multiple PDF files like this:

The script will convert one or more lines of continuous text selected for a redaction, but it will not convert a large block of text set for redaction.

The action will give this result:

You can add a second javascript to the same action to specify the highlighting color you want the action to convert annotations or proposed redactions to:


var annots = this.getAnnots();

for (var i = 0; i < annots.length; i++) {

if (annots[i].type == "Highlight") {

annots[i].strokeColor = color.yellow;






for (var nPage = 0; nPage < this.numPages; nPage++)


// get all annotations on the page

var Annots = this.getAnnots({



// process each annotation

if (Annots != null)


for (var i = 0; i < Annots.length; i++)


if (Annots[i].type == "StrikeOut")


Annots[i].type = "Highlight";










53 views0 comments

It's widely known that Excel's Data Validation tool can be used to create a drop down list for all cells in a selected range. You'll simply be able to click on an down arrow next to a cell and select the entry. This feature can speed up a lengthy manual review of documentation tracked on a spreadsheet. Tonight's tip will show how you can use VBA code to change this tool to allow for multiple entries from the list to be saved in a cell.

To get started follow these steps:

1. Select the data range you want the 'pick list' to be available for.

2. Go to Data . . . Data Validation

3. In the dialog box on the Settings tab, choose 'List' from the Allow menu. Then click on the arrow next to the Source box to select the data range which will contain the entries you want to appear in the drop down list. The entries can be listed on a different worksheet.

If you have to add more items to the list as you go along, check off the box labeled, 'Apply these changes to all other cells with the same settings', and then expand the source range.

4. This will give you a drop down list that will let you select any one of the entries for the cell. If you select a second entry, the first entry will be overwritten.

You can use VBA code posted here, and modified below to make it possible to select multiple entries. The modified version lets you clear the cell after entries have been made (thanks to Susan Lynn for her suggestion); leaves the first entry you select at the beginning of the cell; and puts each new entry on a new line.

On this line of the VBA code you can set the delimiter you want to use between the entries.

xStrNew = " " & Target.Value & Chr(10)

In my version of the code I've entered the Chr(10) reference to put each new entry on a separate line. If 'Chr(10)' is changed to "; " each new entry will be separated with a semi-colon.

In order to clear a cell, select it and choose 'Clear Contents' from the right click menu.

Private Sub Worksheet_Change(ByVal Target As Range)


Dim I As Integer

Dim xRgVal As Range

Dim xStrNew As String

Dim xStrOld As String

Dim xFlag As Boolean

Dim xArr

On Error Resume Next

Set xRgVal = Cells.SpecialCells(xlCellTypeAllValidation)

If (Target.Count > 1) Or (xRgVal Is Nothing) Then Exit Sub

If Intersect(Target, xRgVal) Is Nothing Then Exit Sub

Application.EnableEvents = False

xFlag = True

xStrNew = " " & Target.Value & Chr(10)


xStrOld = Target.Value

If InStr(1, xStrOld, xStrNew) = 0 Then

xStrNew = xStrOld & xStrNew


xStrNew = ""

End If

Target.Value = xStrNew

Application.EnableEvents = True

End Sub

56 views0 comments

In order to run a negative lookahead regular expression search, you can enclose the string you do NOT want the searched for string to appear in front of, in parentheses with a question mark and exclamation point before the given string. So in this example this search: Albany(?!\s+NY)

. . . will find any instance in which Albany is not followed by ' NY'.

This search can be modified to find any string - .* - which does not precede the state abbreviation NY - (?:(?!NY).).$


17 views0 comments

Sean O'Shea has more than 15 years of experience in the litigation support field with major law firms in New York and San Francisco.   He is an ACEDS Certified eDiscovery Specialist and a Relativity Certified Administrator.

The views expressed in this blog are those of the owner and do not reflect the views or opinions of the owner’s employer.


All content provided on this blog is for informational purposes only. The owner of this blog makes no representations as to the accuracy or completeness of any information on this site or found by following any link on this site. The owner will not be liable for any errors or omissions in this information nor for the availability of this information. The owner will not be liable for any losses, injuries, or damages from the display or use of this information.


This policy is subject to change at any time.