Excel

Top / Coding / MSOffice / VSTO / Excel
 

ページ構成
−Top
  • −Coding
    • +.NET
    • +CUDA
    • +JavaScript
    • −MSOffice
      • ・DataNitro
      • +Office用アプリ
      • −VSTO
        • ・Excel
        • ・ThisAddin_Startupに処理を書く問題が起きる
        • +Word
        • ・カスタム作業ウィンドウ
        • ・サンプルコード
        • ・トラブルシュート
        • ・作り方
        • +配布の方法
    • +PHP
    • +PowerShell
    • +Python
    • +Ruby
    • +VBA
    • +misc
    • +画像処理
  • +Server
  • +memo
  • +misc
  • +カメラ
  • +科学技術
  • +記事
  • +数値解析
最新の10件
2018-01-16 更新
  • misc/Hardware/各種プロセッサの倍精度演算性能
2017-11-27 更新
  • Coding/misc/raspberrypi
2017-11-02 更新
  • Coding/.NET/NuGetパッケージの作成
2017-10-19 更新
  • Coding/MSOffice/VSTO/ThisAddin_Startupに処理を書く問題が起きる
2017-06-16 更新
  • Coding/.NET/VisualStudioビルドイベント
2017-05-28 更新
  • misc/Hardware/タブレット向けCPU/複製
2017-05-25 更新
  • Coding/Python/CloudVision
2017-05-24 更新
  • misc/ロードバイク/サイクルロード/奈良
2017-05-11 更新
  • misc/ソフトウェア/文章/文章校正、作成支援ツール
2017-03-15 更新
  • misc/ソフトウェア/プロジェクト管理ツール

Powered By

b_pukiwiki.official.png

edit

目次

  • 概要
  • 最初に
    • 開発環境の準備
    • プロジェクトの作成
  • コードの作成にあたり知っておくとよいこと
    • VBAとの差異点
    • Tips
      • 高速に複数の値を更新する
      • 現在選択されているセルの取得
      • 文字の色を変える
  • インストーラの作成方法

概要 †

VSTOでExcelアドインを作る方法についてのメモ。

↑

最初に †

↑

開発環境の準備 †

  • VisualStudioをインストールする。
    • VS2013以前の場合、Professional以上の有償版を用意する必要あり
    • VS2015から無償のCommunityEdition(Professional相当)でOK
      • Office 開発ツール | Visual Studioを別途インストールする
↑

プロジェクトの作成 †

  • Visual C#→Office/SharePoint→Excel2010アドインを選択して「OK」
    • 「Excel2013アドイン」と「Excel2010アドイン」との差異点は不明
  • 「新しい項目」→「リボン(ビジュアルなデザイナー)」を選択
    • これでリボンUIを追加できる

あとは、WinFormsアプリ作る時と同じ要領で
コンポーネント配置→ダブルクリック→イベント実装すればOK

参考:[C#,Excel]visual studio tools for office(VSTO)を利用してExcelのAddInをC#で作る

↑

コードの作成にあたり知っておくとよいこと †

↑

VBAとの差異点 †

  • ThisAddIn.cs が、VBAの「ThisWorkbook」相当
  • Globals.ThisAddin.Applicationが、VBAマクロの「this」相当
  • 下記2つの名前空間はインポートしたほうがいい
    using Microsoft.Office.Tools.Ribbon;
    using Microsoft.Office.Interop.Excel;
  • 戻り値の型がたびたびdynamicになるので、適宜 as演算子で型をつけるとintelliSenseが効いて楽
↑

Tips †

↑

高速に複数の値を更新する †

Cellの1つ1つにValueを代入すると、Excelの行・列の指定が毎回COM経由で行われるのでコストがかかって遅くなる。
そこで、書き換える範囲のRange.Value2プロパティにObject型の配列を代入する。
一気に代入操作ができるので、COM経由でExcelに毎回アクセスすることがなくなり、速い。

  • [Excel,C#]C#でExcelにデータを一括出力する
↑

現在選択されているセルの取得 †

            var selection = Globals.ThisAddIn.Application.Selection as Range;
            foreach (var cell in selection.Cells)
            {
                try
                {
                    /* 適宜処理する*/
                }
                catch
                {
                    MessageBox.Show("NULL VALUE");
                }
            }

※ 選択しているセルがない場合、Selectionプロパティはnullが返ってくることに注意。
参考: Reading Selected Cells from an excel Sheet

↑

文字の色を変える †

Range.Font.ColorIndex = 3;

ColorIndexの一覧:ColorIndexプロパティ値一覧:エクセルマクロ・Excel VBAの使い方

参考:C# Excel操作覚え書き

↑

インストーラの作成方法 †

作成したアドインの配布方法については、以下にまとめた。
Coding/MSOffice/VSTO/配布の方法


トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS
Last-modified: 2015-10-23 (金) (1911d)
Link: Coding/MSOffice/VSTO/配布の方法(1605d)
Site admin: D*isuke YAMAKAWA

PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.3.29. HTML convert time: 0.061 sec.