C'est le code que j'utilise:
rngData.BorderAround(Excel.XlLineStyle.xlContinuous,
Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin,
Microsoft.Office.Interop.Excel.XlColorIndex.xlColorIndexNone,
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(178, 178, 178)));
La couleur de la bordure est toujours noire, quelle que soit la valeur RVB que je fournis.
J'ai eu le même problème, je n'ai trouvé aucune solution sur le Web, la documentation MS pour l'utilisation de cette méthode dans VSTO est un peu médiocre.
Quoi qu'il en soit, probablement un peu tard pour vous car vous avez posté il y a des mois, mais ma solution consistait simplement à ne pas utiliser la méthode Range.BorderAround et à écrire la mienne!
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;
}
Peut être appelé selon l'exemple ci-dessous (Contents_Table est une NamedRange dans ma feuille de calcul):
BorderAround(Contents_Table.Cells, System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(79, 129, 189)));
J'espère que cela aidera quelqu'un d'autre à se déchirer les cheveux.
Alternativement, si vous n'êtes pas inquiet pour le retrait des lignes intérieures et diagonales, j'ai utilisé avec succès:
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromArgb(153, 153, 153));
worksheet.Cells[8, i].Borders.Color =
System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
.Range("H1:J1").BorderAround LineStyle:=xlContinuous, Weight:=xlMedium, color:=RGB(130, 130, 130)
range.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
range.Borders.Color = System.Drawing.ColorTranslator.ToOle(Color.Red);