2017-02-07 4 views
0

コントロールを作成するExcel VSTOアドインがあるとします。アドインを持たないExcelのインスタンスでコントロールを動作させる方法はありますか?VSTOで追加されたコントロールがアドインなしで動作する

問題の簡素化:アドインボタンを作成します。..

private void Sheet1_Startup(object sender, System.EventArgs e) 
{ 
    var button = this.Controls.AddButton(10, 10, 50, 50, "My Button"); 
    button.Text = "My Button"; 
    button.Click += new EventHandler(button_Click); 
} 

void button_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("I was clicked!"); 
} 

文書は、そのボタンで保存し、別のユーザーに電子メールで送信されます。他のユーザーがドキュメントを開いてそのボタンをクリックすると、何も起こりません。

ボタンは他のユーザーのコンピュータでどのように動作させるのですか?

+0

VSTOアドインは、Excelファイルの一部として出荷することはできません。このアドインは、この機能を実行する必要があるすべてのコンピュータにインストールする必要があります。 –

+0

おそらく、ボタンをマクロブックにして、マクロを参照するボタンを挿入する方法がありますか? –

+0

実際にはvstoを使ってこのマクロを追加しました:http://stackoverflow.com/a/15201483/2043621 –

答えて

0

私は言葉ではなく、エクセル上で開発が、私はそれを見るように、あなたのオプションは次のとおりです。

  1. ドキュメント/テンプレートレベルVSTOアドインを作成します。テンプレート(xltm)に基づいて作成されたすべてのブックは同じボタンを持つことができ、マクロを呼び出したりコードを実行したりすることができます。かなり簡単ですが、受信者にもアドインが必要です。
  2. 基本的に#1と同じですが、アプリケーションレベルなので、依然として受信者のコンピュータにインストールする必要がありますが、ボタンは常に存在するため、自分で作成する必要はありません。特定のワークブックにのみ必要な場合は、条件付きで表示することができます。
  3. ブックにマクロを作成して保存し、ブックからVSTOカスタマイズを削除し、受信者にマクロの実行を指示します。カスタムリボンタブでボタンを追加して実行することはできますが、コードを使用してリボンを変更することはサポートされていないため、ボタンを自動的に作成することはできません。また、すべてのドキュメントで共有されるので、作成された方法に応じてすべてのExcelドキュメントに表示されます(Normal.dotmテンプレートに相当するExcelで作成したい場合)。彼らはそれが時々だけ現われることはできません。
  4. これは#3と非常によく似ていますが、マクロがどのように配信されるかはあなたにとって意味があります。 Wordには、ドキュメント内にマクロを作成してスタートアップフォルダに配置する方法があり、そのシステム上でそのユーザーが開いたすべてのドキュメントにはマクロが用意されています。 Excelには同様のものがあります。personal workbookです。おそらく、この個人用のブックを既に受信した受信者に提供する方法があります。彼らはまだリボンボタンを作成する必要があります。

実際にユーザーにアドインをインストールしないように思われるので、#3または#4が最適なオプションのようです。

関連する問題