VSTOはVisual Studio Tools for Office の略で、officeのアドインやマクロ付きドキュメントを、VB.netやc#などで記述できるフレームワークです。Visual Studioで開発することができ、VBAとオサラバできるMS公式フレームワークです。
この記事では、c#で、カラーパレットを表示して指定した色でセルの文字色を変更する方法を紹介します。
カラーパレットとは?
カラーパレットとは、色を選択するダイアログです。いろいろなものがありますが、今回使うカラーパレットダイアログは以下です。
このカラーパレットから色コードを取得して、セルの文字色に反映するというコードをこの記事で説明していきます。
カラーパレットを表示するコード
カラーパレットを表示するには、フォームにcolorDialog
コントロールを追加します。
カラーパレットを表示してカラーコードを取得していきます。以下のコードを使用します。
colorDialog1.ShowDialog()
でカラーパレットを表示します。色を選択してOKボタンを押すと、DialogResult.OK
が返ります。キャンセルボタンが押されるとDialogResult.Cancel
が返ります。
bool getColorCode(out Color colorCode)
{
colorCode = Color.White;
if(colorDialog1.ShowDialog() == DialogResult.OK)
{
colorCode = colorDialog1.Color;
return true;
}else
{
return false;
}
}
選択された色はcolorDialog1.Color
で取得できますので、これをcolorCode
という引数で呼び出し元に返却します。
Excelのセルの文字色を変更するコード
選択したセルの文字色を変更するには以下のコードで実現できます。
まず、Globals.ThisAddIn.Application.Selection
で選択セルをExcel.Range
オブジェクトとして取得します。
その後、選択範囲が1セル以上あることを判定後、Color
プロパティに色コードを設定します。
この関数では色コードは引数としています。
public static void ChangeFontColor(System.Drawing.Color colorCode)
{
Excel.Range selectedRange = Globals.ThisAddIn.Application.Selection;
if(selectedRange != null && selectedRange.Count > 0) {
selectedRange.Font.Color = colorCode;
}
}
カラーパレット表示から文字色変換までを繋げてみる
繋げてみます。まず、getColorCode
関数を使ってカラーパレットを表示して色コードを取得します。色が選択された時のみ文字色を変更したいので、if文を使用してTrue
が返ってきた時のみChangeFontColor
を呼び出します。
if( getColorCode(out colorCode))
{
ThisAddIn.ChangeFontColor(colorCode);
}
ソースコード全文
ソースコード全文は以下のgithubリポジトリに格納しています。
コンパイルすれば動作しますので、Visual Studioをお持ちの方は遊んでみてください。
https://github.com/harus0313/cliesx
コメント