こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel 2007: マクロブックをXLSTARTに入れると挙動がおかしくなる?

いつもお世話になります。
マクロの配布を容易にするため、ブックにマクロを添付して、
 C:\Documents and Settings\ユーザー名\
  Application Data\Microsoft\Excel\XLSTART
に置いてください、と言おうと思っているんですが、これに関連して以下のようなことが起きます。

(1)個人用マクロブックを作るとExcelが一発で閉じなくなる
Excelでマクロを作って、個人用マクロブックに保存すると、以下のブックができる。
 C:\Documents and Settings\ユーザー名\
  Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLSB
このファイルができると、以下のように挙動が変わる。
1) 適当なブックをダブルクリックすると、Excelが起動し、そのブックが開く。
2) ウィンドウ右上端の[X]ボタンをクリックしてExcelを閉じようとすると、ブックだけが閉じて、Excelは終了しない<=ここが問題
3) もう1回[X]ボタンをクリックすると、Excelは終了する

(2)任意のマクロ付きブックをXLSTARTに入れると、新規文書が開かなくなる
Excelでマクロを作って、任意のブックに保存する。
Excel 2007で使う人と、2003で使う人がいるので、xlsで保存する。
ブックを非表示にして、XLSTARTディレクトリに入れると、個人用マクロブック同様にExcel起動時に開かれるので、マクロが使える。
こうすると、上の(1)の現象に加えて、さらに、以下の現象が発生する。
1) Excelを起動すると、通常は白紙の新規ブックが作成されるが、なぜか作成されず、Excelのみが起動される。

以上です。
任意のマクロブックをXLSTARTに入れながら、起動時に白紙のブックが開き、[X]クリックでExcelが一発で終了する方法はあるでしょうか。
よろしくお願いいたします。

投稿日時 - 2009-04-03 17:27:09

QNo.4849811

すぐに回答ほしいです

質問者が選んだベストアンサー

アドインはWorkbookのように、Auto_OpenやWorkbook_Open
auto_CloseやWorkbook_BeforeCloseも普通に処理されますよ

Workbook_AddinInstallやWorkbook_AddinUninstallは
アドインを登録、解除時にしか処理されません
AutoOpen・Closeなどは、アドインの登録、解除時
ファイルの開始・終了時、処理によって使い分けば良いと思います

>Workbook_AddinInstallに入れてみましたが、動作しません。
上でもちょっと触れましたが、Workbook_AddinInstallを
処理させるには、一度アドインを解除し、登録しなおしてください
コード的にはエラーは無いように思います

>もうひとつはコンテキストメニューです。
コンテキストメニューですが、ほぼコマンドバーとコードは同じです
Application.CommandBars("Cell") のように"Cell"となります
リンクを貼っておきますので、参考にしてみてください

http://d.hatena.ne.jp/Cassiopeia/20070507/1178530855

投稿日時 - 2009-04-07 14:54:52

お礼

ありがとうございます!
Auto_Closeで一発でした。
しょっちゅういじるので、とりあえずこちらで動作させ、リリース時には addininstall / addinuninstall に移そうと思います。
本当にありがとうございます。

投稿日時 - 2009-04-07 16:10:38

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>マクロの配布を容易にするため、ブックにマクロを添付して、
        ・
        ・
>これに関連して以下のようなことが起きます。
は、余り良い方法とは思えません

マクロの配布や更新を考えるのであれば、普通はアドイン形式にすると思うのですが
アドインでは不都合なことがあるのでしょうか?

投稿日時 - 2009-04-04 14:04:16

お礼

ありがとうございます。浅学にしてアドイン形式というものを知らなかったのですが、作成したところできました。xla形式にしたところ2003でも2007でも使えました。

ただ問題なのは、ツールバーとコンテキストメニューが使えなくなりました。

ショートカットキーは、今までAuto_Openマクロで、
Application.MacroOptions macro:="XXXXXXX", ShortcutKey:="N"
アドインになってからは、
Private Sub Workbook_AddinInstall()
に場所を移し、従来通り動作します。

ただ、ツールバーがとコンテキストメニューが問題です。

これまで、ツールバーは、Excelの表示メニューを使って作成し、添付でワークシートに添付していました。しかし、現在は、アドインは表示されないので、ワークシートに添付ができず、また、ツールバーを作成するときに登録するマクロも表示されません。

仕方がないので、手元の本を頼りに、以下のようなコードをWorkbook_AddinInstallに入れてみましたが、動作しません。(ツールバーも表示されず、エラーも出ない)

Dim myCB As CommandBar
Dim myCBCtrl As CommandBarButton
On Error Resume Next
Application.CommandBars("XXX").Delete
Set myCB = Application.CommandBars.Add(Name:="XXXXX", Position:=msoBarBottom, temporary:=True)
Set myCBCtrl = myCB.Controls.Add(Type:=msoControlButton)
With myCBCtrl
.Style = msoButtonIconAndCaption
.Caption = "XXX"
.OnAction = "subXXXXXXX"
.FaceId = 30
End With
myCB.Visible = True

もうひとつはコンテキストメニューです。
従来シートでは、やはり AutoOpen から以下のようなマクロを呼んでいました。
Set SCM = Application.ShortcutMenus(xlWorksheetCell)
SCM.MenuItems.AddMenu "XXXXX"
SCM.MenuItems("LTB Helper").MenuItems.Add "AAAAA", OnAction:="subAAAAA"

しかし、これも動作しなくなりました。(右クリックでコンテキストメニューが表示されません)

自分でも調べてみますが、もし何かわかりましたらご教示願いますようよろしくお願いいたします。

投稿日時 - 2009-04-07 11:32:36

あなたにオススメの質問