• ベストアンサー

アドインファイルの作り方

マクロを作成して、人に配ろうかと考えています。ツールバーにコマンド追加してマクロを登録しました。ユーザー設定で、ツールバーの添付で保存(xls)して、別にアドインファイル(xla)で保存しました。別のパソコンにアドインすると、Personal.xlsにマクロが見つかりません。って出てきます。自分のパソコンにもどって、アドインし、コマンドを実行すると、元のxlsファイルが自動的に読み込まれて、実行できてしまいます。ユーザー設定を開きマクロの登録を見てみると、元のxlsファイルが関連付けられてしまっています。(因みに、マクロは、Private としています。 どうにか?アドインファイルだけで完結したいのですが、どのようにすればいいのでしょうか?教えてください。宜しくお願い致します。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.5

> アドインファイルのシートって見ることが出来るのですか?  アドインのシートは通常見えませんが、下記の手順で見ることが可能です。  前提:Excel で対象アドインを有効にしておく   1. VBE のプロジェクトエクスプローラーで、そのアドインの     ThisWorkbook モジュールを選択   2. プロパティーウインドウで IsAddin プロパティーの値を     False に変更  なお、元に戻すときは IsAddin プロパティーを True にします。  余談ですが、実はアドインは(*.xla) でなくても構わないのです。IsAddin  プロパティー Ture / False が重要で、別に(*.xls)のまま IsAddin を  True としてもアドインとして機能します。  しかし、ユーザーにとってはアドインと言えば(*.xla)なので混乱を避ける  意味で、最終的には(*.xla)にすべきと考えます。 (*.xls)でアドインと  して運用するのは止めた方が良いでしょう。 # 文字化けは解決できました?^^

wan_wan
質問者

補足

重ね重ねありがとう御座います。 文字化けの件は、まだ解決していません。説明が悪かったのですが!!1行目の"Caption"の文字が"ÒÆ­°–¼"と文字化けします。(ブックの読み込み時は一瞬だけ"Caption"の表示がされて書き換えられる)このことから、バイリンガル対応にしている部分で、当方の設定との相性が悪いのだと思います。機能的には、問題なく動いています。(但し、30個のボタンを登録しようとすると13個ぐらいまでしか生成してくれません。一番左の数字を一部消すと、30個まで生成します。原因不明)との他"OK"やラベル表示が書き換えられています。が、適当にクリックすれば、使える状態です。一応、報告まで。(実用上、別に、いいかなぁ?って思っています。)ありがとう御座いました。 "ÒÆ­°–¼"の部分は、補足するをクリックすると別のものに置き替えられてしまってます。よって、今ご覧の文字は、違っています。(これも説明が悪いなぁ!!すみません)

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

wan_wanさん, こんばんは。 KenKen_SPさん、お久しぶりです。(ちょっと、事情があって、ここを離れていました。) >文字化けの件は、まだ解決していません。 それは、OSの文字の問題だと思います。私は、そのツールを使ってはいませんが、おそらく、Unicode と ANSIの問題で、解消はされないと思います。私の持っている日本語対応のあるツールでも、9x系は、文字化けしますが、2x系は、問題がありません。ですから、9x系では、諦めて英語にしています。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

> やはり、人のパソコンにアドインするとPersonal.xls内で探してしまうようです。   ご自分の PC で MyAddin!Macro1 と設定しても、それを保存したときに   フルパスに書き換えられるためだと思います。   MyAddin!Macro1 → 'C:\Document and Setting..(略)...\MyAddin.xla..   みたいな感じでしょうね。ユーザー名が違えば、パスも変わりますので、   それを他の PC に持って行ってもダメなのかと、、、   正直、ツールバーの添付というのはやったことがないので、正確なとこ   ろは良く分かりません。すみません。   結論として、VBA でメニューを追加する方向で検討された方が早い気が   しますので、オススメします。 > 文字が化けてしまいます。(いわゆるウルトラ文字みたいなの・・   当方では文字化けはありません。MenuGenerator.xls でメニューを作成する   シートのフォントが Verdana になってますが、これを MS Pゴシックなどの   日本語 Windows 標準フォントに直してからメニュー作成ウィザードを行って   みて下さい。どうも、このシートをアドイン側に複製するようです。   関係ないかもしれませんが....   これも正確なところ良く分かりません。すみません。 > ファースを任意のドット絵にする方法ってあるのでしょうか?   MenuGenerator.xls はメニューを定義したシートをアドインに配置して   それを読み取りながらメニューを作成するようです。したがって、   難しいでしょうね....   その場合は、#3~4 で Wendy02 さんが具体的なコードを提示されてますので、   そちらを参考になさって下さい。   私見ですが、規定のモノでも千個ぐらいのアイコンがある訳で、その中で使え   そうなものは使った方が良いのではないかと思います。独自の画像を使うと、   アドインのファイルサイズが大きくなるので、読み込み時(Excel 起動時)に   時間がかかります。   うーーん、、ほとんど役にたたないレスになってしまいましたね。   本当にすみません。 # Wendy02 さん、お久しぶりです^^

wan_wan
質問者

補足

教えて頂いたツール使ってみました。凄く便利です。大変助かります。ありがとう御座います。ところで、全然違う話なんですが、アドインファイルのシートって見ることが出来るのですか?強制的に拡張子をxla→xlsに変更してみようと試みても駄目でした。(これが出来れば、アドインファイルの隠匿性がなくなるので元々出来ないようになっているのかも?)わかる範囲で教えて頂ければと存じます。宜しくお願い致します。 また、方向性としては、ご指導の通りにメニュー追加で進めます。大変ありがとう御座います。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 >オリジナルで編集したFace(例えば、ニコちゃんマークを貼り付け、ユーザー設定のボタンイメージの編集で改変したFaceを自作したツールバーに貼り付ける方法ってあるのでしょうか? 私の知っている方法は、アドイン・ファイルのワークシート側にあらかじめ、ビットマップの絵などを、貼り付けておきます。 すでに、アドインとして出来上がっても、貼り付ける方法は、お分かりになりますよね。要するに、マクロで貼り付ければよいだけですから、シートを開けなくてもよいわけです。 そのような条件として、  Sheet1.Shapes(1).Copy 'クリップボードにコピーさせ With myCBCtrl.Controls.Add(Type:=msoControlButton)    .Caption = "マクロ1(&A)"    .OnAction = "myMacro1"    '.FaceId = 351 これは使わない    .PasteFace '絵を貼り付ける   End With このようにして、自作のボタン・イメージをボタンに貼り付けるわけです。 もしかした、Excel2003では、直接、呼び出す方法があるような気がしていますが、私の手元にはありませんので、私の知る範囲では、これだけです。 >アドインを解除する時には、Application.CommandBars("○○○").Visible = Falseとして非表示にしています。(Deleteで削除すればいいのかも?) >コマンドのフェースが上手く改変できずにここで質問したところ、ブックに埋め込むこともできる 確か、埋め込んだ(個別にコピーされた)ツールボタンは、自動的に 相手側にExcel.xlb にコピーされたはずです。(私はやったことがありませんが、他人のマクロでは時々あります。) また、アドインの場合というか、マクロ経由では、.Visible プロパティは使いません。発つ鳥なんとかではありませんが、アドインをアンインストールする時には、相手側には何も残さないようにします。 On Error Resume Next  Application.CommandBars("○○○").Delete です。

wan_wan
質問者

補足

丁寧なご指導ありがとう御座います。早速、試してみました。ワークシートに絵を貼り付ける方法として、ユーザー設定・ボタンイメージのコピー・ユーザー設定を閉じる・任意のセルを選択してショートカットメニューからペーストしました。 その後、ご指導の通り、PasteFaceで貼り付けると、なんと、絵が一回り小さくなってしまいます。また、透明表示されていた部分がグレーに着色されてしまいます。そこで、苦肉の浅知恵として、次のようなマクロを組んでみました。シートに貼り付けるのではなく、やはり、ブックに添付したコマンドバーを用意しておいて、コマンドバー間でクリップボードを介してコピーしてしまう方法です。結果は、上手く行きましたが、 御両者がご指摘している、肥大化の問題が残ります。何か?ご指摘頂ける点があれば、ご指導願えないでしょうか? Sub Macro1() Dim myCB元 As CommandBar Dim myCB先 As CommandBar Dim myCBCtrl As CommandBarControl Set myCB元 = Application.CommandBars("コピー元のコマンドバー名") Set myCB先 = Application.CommandBars("コピー先のコマンドバー名") For i = 1 To ボタン数 myCB元.Controls(i).CopyFace myCB先.Controls(i).PasteFace Next  最後に、deleteする。 End Sub VBのディストリビューション・ウィザードやEXEPress インストローラって何ですか?エクセルに標準で付いている機能ですか?それとも、VBを購入して、VB側からエクセルを操作する機能?ですか?重ね重ねご指導頂ければと思います。宜しくお願いいたします。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 昨日の続きの話になるかと思いますが、参考になるアドイン・サンプルをアレンジしてみました。ただ、アドインをむやみに入れてしまいますと、レジストリを汚すことにもなりかねませんので、それは、ご自身で判断してください。 これは、大村あつし氏の『かんたんプログラミング Excel VBA 応用編』第6章を、私なりにアレンジしたものです。 ご質問では、設計の中で、ツールバーの登録の仕方が間違ったものだと思います。 以下のようにして、自分のツールバー(以下は、メニューバー)を、アドインで設定し、アドインで解除するように作るのが標準的です。たぶん、そのような作りになっていないのだと思います。ユーザーツールバーを作られて、それに設定を設けると、配布した後に、アドインをはずしても、そのツールバーが残るという厄介な現象が起こってしまいますので、出来るだけ、それはマナーとして行わないのがふつうです。 myCB.Controls.Add(Type:=msoControlPopup) で、絵つきとなりますと、だいたい、既存のFaceID を使うのが一般的ですが、そうでない場合は、アドインファイル作成後ですと面倒ですが、PasteFace を使います。 また、配布の際は、WinArrow 氏の "Excel^Addin Installer SP " が、便利ではないかと思います。 http://www.vector.co.jp/soft/win95/prog/se398317.html 私個人は、VBのディストリビューション・ウィザードやEXEPress インストローラを使ってしまいます。 '=============================================== 'ThisWorkbook '=============================================== Option Explicit '------------------------------ 'アドインインストール時に自動実行 '------------------------------ Private Sub Workbook_AddinInstall()   Dim myCB As CommandBar   Dim myCBCtrl As CommandBarControl, myCBCtrl2 As CommandBarControl       Set myCB = Application.CommandBars("Worksheet Menu Bar")      Set myCBCtrl = myCB.Controls.Add(Type:=msoControlPopup)   myCBCtrl.Caption = "アドイン"        With myCBCtrl.Controls.Add(Type:=msoControlButton)    .Caption = "マクロ1(&A)"    .OnAction = "myMacro1"    .FaceId = 351   End With      With myCBCtrl.Controls.Add(Type:=msoControlButton)     .Caption = "マクロ2(&B)"     .OnAction = "myMacro2"     .FaceId = 352   End With   With myCBCtrl.Controls.Add(Type:=msoControlButton)     .Caption = "アドインアンインストール(&Q)"     .OnAction = "AddinUnInst"     .FaceId = 342   End With   Set myCBCtrl = Nothing   Set myCB = Nothing End Sub '---------------------------------- 'アドインアンインストール時に自動実行 '---------------------------------- Private Sub Workbook_AddinUninstall()    Call Auto_Remove    'Application.CommandBars("Worksheet Menu Bar").Reset End Sub '==================================================== '標準モジュール '==================================================== Option Explicit Sub myMacro1()   MsgBox "マクロ1を実行しました", vbExclamation End Sub Sub myMacro2()   MsgBox "マクロ2を実行しました", vbExclamation End Sub '----------------------------- 'アドインをアンインストールする '----------------------------- Sub AddinUnInst()   MsgBox "アドイン「MyAddin」を解除します"   AddIns("MyAddin").Installed = False End Sub '---------------------------------- 'アドインアンインストール時に自動実行 '---------------------------------- Sub Auto_Remove()   Application.CommandBars("Worksheet Menu Bar").Reset End Sub

wan_wan
質問者

補足

早速のご指導ありがとう御座います。 PasteFaceを使う時に、オリジナルで編集したFace(例えば、ニコちゃんマークを貼り付け、ユーザー設定のボタンイメージの編集で改変したFaceを自作したツールバーに貼り付ける方法ってあるのでしょうか?色々探しているもののなかなかいい手法が見つかりません。その結果、ブックに添付という手法になりました。このあたりを、もう少しご指導いただけると幸いに存じます。宜しくお願い致します。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。KenKen_SP です。 > ツールバーにコマンド追加してマクロを登録しました。 ツールバーにマクロを割り当てると、ご自分の環境にあわせたリンク が張られます。つまり、ご自分の Personal.xls にあるマクロを呼び 出そうとするのです。 例) Personal.xls!Macro1 Personal.xls は全ての PC にあるとは限りません。アドイン名で割り 当てる必要があります。 例) MyAddin.xla!Macro1 です。 ところで、アドインは「有効化・解除」が自由にできるものです。ここ で問題となりそうなのは、  ・「ツールバーの添付」という形でユーザーインターフェースを提供   した場合、アドインを解除してもツールバーが残ったままになる です。アドインを解除した状態で、このツールバーのボタンをクリック すると、また「アドインファイルが見つかりません」のようなアラート が表示されてしまい、結局解決になりません。 そこで、通常アドインの場合には「アドインを有効にしたとき」に、VBA でツールバーやメニューなどのインターフェースを動的に追加する方法 が用いられます。 もちろん、アドインを解除した場合には、追加したインターフェースは 削除するようにします。 ツールバーやメニューを操作するのは、なかなか厄介なのですが、その 手間を軽減できる素晴らしいサポートツールが在ります。 ご紹介しますので、お試し下さい。 【 Menu Generator 】 http://www.puremis.net/excel/soft/MenuGeneratorJ.shtml

wan_wan
質問者

お礼

教えて頂いたソフトを早速使わせて頂きました。大変素晴らしいものです。本来は、作者に問い合わせるべき問題だと思いますが、文字が化けてしまいます。(いわゆるウルトラ文字みたいなの・・)それと、ファースを任意のドット絵にする方法ってあるのでしょうか?判る範囲で教えて頂ければ幸いに存じます。宜しくお願い致します。

wan_wan
質問者

補足

早速のご指導、ありがとう御座います。 ご指示の通り、 MyAddin.xla!Macro1(当然、ファイル名はそれなりに変えています)とアドインファイル名を関連つけて保存し他のパソコンにアドインしましたが、やはり、人のパソコンにアドインするとPersonal.xls内で探してしまうようです。人のパソコンでユーザー設定を行い、アドインファイルに関連つけなおすと、この点については、もう少し自分なりに試行錯誤してから再度補足質問したいと思います。 当初、ご指摘のように、メニューバーを追加しようとしたのですが、コマンドのフェースが上手く改変できずにここで質問したところ、ブックに埋め込むこともできると教えて頂き現在に至っております。 アドインを解除する時には、Application.CommandBars("○○○").Visible = Falseとして非表示にしています。(Deleteで削除すればいいのかも?) ユーザー設定のボタンイメージの編集を行なった結果を反映させるには、どうすればいいのでしょうか?重ね重ねご指導頂ければ幸いに存じます。

関連するQ&A

  • アドインの組込みとブックが開くタイミングがずれる

    全てのブックで使用するアドインを作成しました(AddIn.xlaとします)。 Excelの起動時にアドインが自動で組み込まれるように、アドインファイルをXLSTARフォルダに入れました。 あるブック(Book.xlsとします)の Workbook_Openイベントで AddIn.xlaに含まれるプロシージャを実行する時に、次のような問題が出ました。 エクスプローラから Book.xls をダブルクリックして開くと、AddIn.xlaに含まれるプロシージャを実行するところでエラーが出ます。 Excelを起動して、メニューバーから Book.xls を開くと、問題ありません。 この症状は、PCによって出るものと出ないものがあります。 エラーの状況から見ると、AddIn,xla が組み込まれるタイミングと Book.xla の Workbook_Openイベントが実行されるタイミングにずれがあるように見えます。 AddIn.xla が組み込まれるまで Book.xls を開かないようにすることは可能でしょうか。

  • アドインファイルの移動

    Excelのアドインファイルを移動する必要が出てきたのでVBAで移動させようとしています。 VBAは、アドインとは別のExcelファイルにコーディングしています。 アドインファイル名は MyAdd.xla とします。 MyAdd.xla を新フォルダに移動させることはできましたが、参照元の変更がうまくできません。 設定するPCの台数が多いので、自動で処理したいのです。 よろしくお願いします。 AddIns("MyAdd").Installed = False AddIns.Add Filename:= "新フォルダパス\MyAdd.xla" AddIns("MyAdd").Installed = True

  • エクセルのアドイン

    先日、日本語バージョンにアメリカ製のアドインファイルを組み込みました。組み込み自体は上手くいっているみたいで専用のファイルを開くことはできるのですが、そのアドインのメニューがツールバーに見当たらず、コマンド操作をできない状態です。込みこんだファイルはsimtools.xlaというファイルです。どなたか解決方法をご存知でしょうか?

  • Excel2003でアドインの更新ができない

    お世話になります。 環境は、WindowsXp Sp3 + Excel2003 Sp3 です。 VBAでプログラムを作成し"sss.xla"で保存します。 この"sss.xla"を"C:\Documents and Settings\<USER>\Application Data\Microsoft\AddIns"へ入れます。 Excelを起動しツール→アドインを開くと作成したアドインが表示されているのでチェックします。 また、チェックをはずすとアドインが無効になります。 アドイン(マクロ)の起動には「CTRL+SHIFT+J」を関数(サブルーチン)「sss」へ割り当てています。 ここまでは問題なく動作しています。 "sss.xla"を修正します(たとえば、足し算していたものが間違っていて掛け算に修正する等です)。 この修正した"sss.xla"を上記のフォルダーへ上書きコピーします。 Excelを起動してアドインを動かしてみると修正前のものが動いてしまいます。 (セルに色をつけたりもしていますので明らかに修正前のものが動いています。) インターネットでいろいろ探してみたところ、 「"C:\Program Files\Microsoft Office\OFFICE11\Library"へ"sss.xla"を入れると大丈夫」 との情報があったので試してみましたがだめでした。 アドインを無効にし"・・・\AddIns"から削除して"・・・\Library"へ入れています。 "sss.xla"本体とは別にどこかにキャッシュされたりしているのかとも思い、Cドライブを"sss.xla"で全検索したり、レジストリーを検索したりしましたがそれらしいものは見つかりませんでした。 (ファイルそのものは削除しているので、どこかにキャッシュされているのだろうと思いました。) さらに修正した"sss.xla"を"sss101.xla"としてアドイン登録しても動くのは"sss.xla"が動いてしまいます。 どうすれば修正した"sss.xla"を動かすことができるようになるでしょうか。 よろしくお願いします。

  • アドインファイルの移動(再)

    いったん解決したと思ったのですが、何度もテストしている間にグチャグチャになってしまっていたらしく、再起動してからクリーンな状態で検証するとダメでした。 http://okwave.jp/qa/q8026813.html 申し訳ありませんが、再掲いたします。 Excelのアドインファイルを移動する必要が出てきたのでVBAで移動させようとしています。 VBAは、アドインとは別のExcelファイルにコーディングしています。 アドインファイル名は MyAdd.xla とします。 MyAdd.xla を新フォルダに移動させることはできましたが、参照元の変更がうまくできません。 設定するPCの台数が多いので、自動で処理したいのです。 よろしくお願いします。 AddIns("MyAdd").Installed = False AddIns.Add Filename:= "新フォルダパス\MyAdd.xla" AddIns("MyAdd").Installed = True

  • 自作アドインの使い方

    エクセルで自作マクロを作りました。 内容的にはsheet1の全国の名簿を、都道府県単位でエクセルファイルに ふりわけるというものです。マクロ名は、furiwakeとしました。 これを「ふりわけ.xla」としておきました。 「ツール」→「アドイン」で有効なアドインとして「レ」を つけました。ここまではいいんです。 それでさっそく今月の「全国の名簿」を都道府県単位でエクセルファイルに振り分けたいのですが、どこを押せば、furiwakeマクロは実行されるのでしょうか?

  • Book(.xls)→アドイン(.xla)に関する質問

    現在Excelにて、様々なメニューを作成したBook(.xls)があります。これをアドイン(.xla)にしようと思っています。 元Bookの「様々なメニュー」の中に、イベントプロシージャを使用したマクロも登録されていますが、アドイン化した後も使用出来る様にするには、 Private Sub Workbook_AddinInstall() Private Sub Workbook_AddinUninstall() にて、どのような記述が必要なんでしょうか? 教えて頂ければと思います。

  • 作ったマクロをアドインするには?

    エクセル2000で [Visual Basic]ツールバーの [マクロの記録]をクリックして 「マクロの記録」のダイアログボックスを表示して 「マクロの保存先」を「個人用マクロ ブック」を選択して マクロを記録します. 記録したマクロは Windows\Application Data\Microsoft\Excel\Xlstart のフォルダに,Personal.xlsという名前で保存されます. 次回からエクセルを起動すると, そのPersonal.xlsで起動しますが そのファイルで計算などをして そのファイル名で保存すると, 次回の起動にその保存の影響が出てします. 質問です エクセルを標準の状態で起動して, なおかつ自分で作ったマクロを 簡単に使うにはどうしたらいいでしょうか? アドインするとか本に書いていますが・・・

  • Excelアドイン導入時のツールバーボタン表示位置

    Excelに*.xlaのアドインを登録すると、ツールバーに当該ボタンが出現します。 このボタンの表示位置は保存されないようで、再起動後は必ずツールバーが1行増えてしまう位置に移動します。 また、アドインのボタンは「表示」-「ツールバー」で表示しない設定にしても再起動後は表示されてしまいます。 これはExcelの仕様なのでしょうか。 「表示」-「ツールバー」からの設定を無視するのは我慢できるとしても、必ず画面が狭くなってしまうように表示されるのは何とかならないでしょうか。

  • Excel 2003 アドインを消してしまいました

    Excel 2003で[ツールバー]メニューから[アドイン]を選択し、ユーザー設定ダイアログの上にドラッグ&ドロップして、[アドイン]を消してしまいました。 元の状態に戻そうと調べましたが(再インストールも行いました)復元できない状態です。 [アドイン]はどこにいってしまったのでしょうか?どうすれば元に戻るのでしょうか? 宜しくお願いします。

専門家に質問してみよう