Tuve el mismo problema, no pude encontrar ninguna solución en la web, la documentación de MS para el uso de este método en VSTO es un poco pobre.
De todos modos, probablemente sea un poco tarde para ti, ya que lo publicaste hace meses, pero mi solución fue simplemente no utilizar el método Range.BorderAround y escribir el mío.
private void BorderAround(Excel.Range range, int colour)
{
Excel.Borders borders = range.Borders;
borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
borders.Color = colour;
borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
borders = null;
}
puede invocarse como por ejemplo a continuación (Contents_Table es un NamedRange en mi hoja de trabajo):
BorderAround(Contents_Table.Cells, System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(79, 129, 189)));
Espero que esto ayude a alguien más por ahí rasgan las vestiduras.
manera corta y buena –