Bei der Konvertierung eines VBA-Makros in ein in C# codiertes Plug-in bin ich in die folgende Sackgasse geraten.C# Konvertieren eines VBA-Makros in C# mit benutzerdefinierter RGB-Farbe
Der ursprüngliche VBA-Code ist:
Selection.Font.Name = "Times New Roman"
Selection.Font.Size = 14
Selection.Font.Bold = True
Selection.Font.BoldBi = True
Selection.Shading.Texture = wdTextureNone
Selection.Shading.ForegroundPatternColor = wdColorAutomatic
Selection.Shading.BackgroundPatternColor = RGB(173, 216, 230)
mit dem Office.Interop
Namespace C# konvertiert:
using Microsoft.Office;
using Microsoft.Office.Interop;
using Word = Microsoft.Office.Interop.Word;
Word.Document oWordDoc = new Word.Document();
var Selection = oWordDoc.ActiveWindow.Selection;
Selection.Font.Name = "Times New Roman";
Selection.Font.Size = 14;
Selection.Shading.Texture = Word.WdTextureIndex.wdTextureNone;
Selection.Shading.ForegroundPatternColor = Word.WdColor.wdColorAutomatic;
Selection.Shading.BackgroundPatternColor = Word.ColorFormat.RGB(173, 216, 230);
Dieser Code wird nicht kompiliert als die RGB
keine Methode ist. Ich versuche herauszufinden, wie ich das mit den verfügbaren Methoden machen kann, aber bisher kein Glück.
Ich würde mich über jeden Hinweis auf diese oder irgendeine Beschreibung freuen, die die Umwandlung erklären würde.
Update:
Eigentlich sieht es aus wie die folgenden Werke:
Color mycolor = Color.FromArgb(173, 216, 230);
Selection.Shading.BackgroundPatternColor = (Word.WdColor)(mycolor.R + 0x100 * mycolor.G + 0x10000 * mycolor.B);
This question den gleichen Ansatz verwendet. Aber es sieht immer noch zu komplex ...
Update 2:
Mit den Vorschlägen unten scheint die glatte Ansatz zu sein:
Selection.Shading.BackgroundPatternColor = RGB(172,216,230);
private Word.WdColor RGB(int p1, int p2, int p3)
{
return (Word.WdColor)p1 + (0x100 * p2) + (0x10000 * p3);
}
Sie könnten versuchen die 'Color.ToArgb()' Methode und sehen, ob das Ihnen die gleiche Farbe gibt. – TyCobb