C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

共有アドインについて


(過去ログ 23 を表示中)

[トピック内 1 記事 (1 - 1 表示)]  << 0 >>

■10256 / inTopicNo.1)  共有アドインについて
  
□投稿者/ みど (1回)-(2007/11/14(Wed) 20:05:58)

分類:[VB.NET/VB2005] 

開発環境
 :Windows XP
 :VB2005
 :Excel 2003 (MS Office 2003 Professional SP2)

 :Celeron 2.66 GHz
 :760 MB RAM

はじめまして。みどと申します。

Excel のメニューバーにメニューとサブメニューを追加し、さらに追加した
サブメニューを選択するとFormを開いて...といった処理をしようと考えて
おります。

VB2005にて共有アドインとしてプロジェクトを作成し、MSDNなどで
照会されているサンプルソースを基にコーディングし、最終的には
望みの処理ができる様にはなりましたが、Excelの起動に時間が掛かる
様になってしまいました。

下記にソースを記述させて頂きますが、サンプルソースをそのままで
コーディングした「コードA」の方が「時間が掛かる」というもので、
Excelの起動からシートに何か入力できる様になるまでの実際の時間に
ついては、

  「コードA」 20秒
  「コードB」 5秒  ←アドインをインストールしない状態と同じ時間

でした。

コードBについては、変数を全て Object で定義したり、定数を自作したりと
無茶苦茶なことをしていますが、コードBでは問題なく早く起動します。

「Core.CommandBar」といった「Microsoft.Office.Core」を参照する様な
記述があると遅くなる様です。

恐れ入りますが、「何か設定が抜けている!」のか「そういうもの!」なのか
何かご存知でしたら、ご教授下されば幸いです。 
よろしくお願い致します。

*以下、コードの抜粋です。


■コードA・B 共通部分------------------------------------------------
Imports System.Runtime.InteropServices
Imports Microsoft.Office    '* Microsoft.Office.Core を参照設定に追加しました。


■コードA--------------------------------------------------------------

Public Class Connect

Implements Extensibility.IDTExtensibility2

Private applicationObject As Excel.Application
Private addInInstance As Core.COMAddIn

Private MainMenuBar As Core.CommandBar
Private MenuBarItem As Core.CommandBarControl

Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection

    applicationObject = DirectCast(application, Excel.Application)
 addInInstance = DirectCast(addInInst, Core.COMAddIn)

  MainMenuBar = applicationObject.CommandBars("Worksheet Menu Bar")
  MenuBarItem = DirectCast(MainMenuBar.Controls.Add(Core.MsoControlType.msoControlPopup, Temporary:=True), Core.CommandBarControl)
  MenuBarItem.Caption = "メニュー(&Q)"

  MenuItem01 = MenuBarItem.Controls.Add(Core.MsoControlType.msoControlButton, Temporary:=True)
  MenuItem01.Caption = "サブメニュー1(&A)"
  MenuItem01.Visible = True

End Sub

End Class

■コードB--------------------------------------------------------------

Public Class Connect

Implements Extensibility.IDTExtensibility2

Private applicationObject As Object
Private addInInstance As Object

Private Const GWk_msoControlPopup As Integer = 10
Private Const GWk_msoControlButton As Integer = 1

Private MainMenuBar As Object
Private MenuBarItem As Object

Public Sub OnConnection(ByVal application As Object, ByVal connectMode As Extensibility.ext_ConnectMode, ByVal addInInst As Object, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnConnection

  Implements Extensibility.IDTExtensibility2

   applicationObject = application
   addInInstance = addInInst

  MainMenuBar = application.CommandBars("Worksheet Menu Bar")
  MenuBarItem = MainMenuBar.Controls.Add(GWk_msoControlPopup, Temporary:=True)
  MenuBarItem.Caption = "メニュー(&Q)"

  MenuItem01 = MenuBarItem.Controls.Add(GWk_msoControlButton, Temporary:=True)
  MenuItem01.Caption = "サブメニュー1(&A)"
  MenuItem01.Visible = True

  End Sub

End Class

------------------------------------------------------------------------

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -