dポイントプレゼントキャンペーン実施中!

初めまして。
仕事でC#とExcelを使ったアプリケーションの開発を行うことになったのですが、C#側からExcelの操作方法がわからず困っています。
行いたいことは以下のとおりです。
1)C#のプログラムでExcelファイルを開く
2)開いたExcelには、マクロやボタンなどはない
3)C#のプログラムで、Excelファイル上にボタンを作成する
  ※フォームでもコントロールでも可。
4)Excelファイル上に作成されたボタンが押されたら、C#側の関数が実行されるようにする
  ※Excelにマクロは作らない
5)Excelファイルを閉じたときに、追加したボタンを削除して保存する
6)C#のプログラムを終了する

恐れ入りますが、みなさんの知恵を貸してください。


public partial class MainForm : Form
{
Excel.Application xlApp;
Excel.Workbook xlBook;
Excel.Worksheet xlSheet1;
Excel.AppEvents_WorkbookBeforeCloseEventHandler EventDel_BeforeBookClose;

public MainForm()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

xlApp = new Excel.ApplicationClass();
xlBook = xlApp.Workbooks.Open("c:\\a.xls", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
xlSheet1 = (Excel.Worksheet)xlBook.Worksheets.get_Item(1);

EventDel_BeforeBookClose =
new Excel.AppEvents_WorkbookBeforeCloseEventHandler(BeforeBookClose);
xlApp.WorkbookBeforeClose += EventDel_BeforeBookClose;

/***********************************************************/
// ここで、xlSheet1 に
// Excelのフォームまたは、コントロールのボタンを追加したい
// また、そのボタンのClickイベントを登録したい(MButton_Click)
/***********************************************************/

xlApp.Visible = true;
xlApp.UserControl = true;
}

/// Excel上に作成したボタンのアクション
private void MButton_Click()
{
Debug.WriteLine("MButton_Click");
}

private void BeforeBookClose(Excel.Workbook Wb, ref bool Cancel)
{
/***********************************************************/
// ここで、ボタンを削除して保存したい
/***********************************************************/
}
}
}

A 回答 (1件)

以下のようなサポートソフトがあります。


(個人で買うのは、ちょっとキツイですけど、仕事ならOKでしょう)

もしかすると、フリーで同様なソフトがあるかもしれませんが、やはり使いやすさ、信頼性を考えると、商品のほうがいいと思えます。

http://www.adv.co.jp/products/product_ExcelCreat …

エクセルというか、Officeのファイルは複雑怪奇ですからね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!