質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Q&A

解決済

2回答

3517閲覧

EXCELからのプログラム起動

htetsuro1021

総合スコア7

COM

COM(Component Object Model)はMicrosoftによるコンポーネントテクノロジーであり、 ソフトウェアの再利用を目的とした技術を指します。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

0グッド

0クリップ

投稿2015/12/10 04:27

Visual Studioを使用し、クラスライブラリ(DLL)によるプログラムを作成しようとしています。

内容は、EXCELを開いて値を編集した後、ブック保存のタイミングで、
作成したプログラムを呼び出し、EXCELブックに登録した内容よりテキストファイルを作成するという単純なモノです。

以前VB6でActiveXコンポーネントを作成した際には、「regsvr32」を使用してレジストリに登録し、CreateObjectから呼び出していました。

今回は不特定多数の人間に配布するため、出来ればレジストリには登録せず、
DLLファイルを特定のフォルダに配置しただけで使用したいのですが、
そのような事は可能でしょうか。

開発環境ですが、Visual Studio 2010 Professional、Microsoft Office 2010です。
ちなみに、諸々の事情で「Visual Studio Tool for Office(VSTO)」や「VBAマクロ」は使えなくなりました。

どうかお知恵を拝借したく、お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

実行環境によりますが、最近のCOMでは「COM相互運用機能」と言って、レジストリ登録しないでも利用できる場合があります。

詳しくはMSDNのサイトを参照してみてください。

投稿2015/12/10 05:15

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

htetsuro1021

2015/12/10 05:56

KoichiSugiyama 様、御回答ありがとうございます。 早速MSDNのサイトを見ながらマニフェストを書いてみようと思います。 御回答を頂いておきながら次いでの御質問で大変恐縮です。 呼び出し先は上記の御回答により解決できるかと思いますが、呼び出し元のEXCELからのCOM呼び出しは、やはりVBAのアドインを配置するしか方法がないように思えるのですが、本件について何か御存知でしょうか。 度々の御質問で誠に恐縮です。
KoichiSugiyama

2015/12/10 13:06 編集

ご質問の文章を再度読み直してみました。VSTOもVBAも使えない、ということですが、だとするとその状態ではCOMに限らず外部プログラムを呼び出すということ自体できないのではないでしょうか。どういった方法で外部プログラムを実行しようとされているのかお聞かせ願えますか?勘違いしているようでしたら済みません。
htetsuro1021

2015/12/11 05:36

KoichiSugiyama様 御回答ありがとうございます。 また御力になって頂き、誠に恐縮です。 実のところ、そこが今の最大の悩みでもあります。 EXCEL自体も不特定多数の人間が使用する為、EXCEL側にVBAを組み込み外部プログラムを読み込むのが最も良いと考えたのですが、 上記のようにVBAは使えないため、それも使えなくなりました。 EXCELの起動時に「XLSTART」フォルダ内を読み込むようなので、そこに外部プログラム起動用のアドインファイルを仕組めば起動時に読み込んでくれると思うのですが…
KoichiSugiyama

2015/12/16 03:20

実行ファイル形式になっているものであれば、ハイパーリンクで実行ファイルを指定すれば実行できることは確認できました。これが何かお役にたてればと思います。
htetsuro1021

2015/12/16 09:00

KoichiSugiyama様 たびたびの御回答、誠に恐縮です。 実行ファイル形式ということですと「EXE」でしょうか。EXEであれば単体での起動も可能なので問題ない気がします。 根本的に「DLL」は起動させるプログラムがないと動きませんので、御回答頂きました「ハイパーリンクで実行ファイルを指定する」方法も含め、本件は配布ルール・運用ルールも含めながら考えてみます。 色々御知恵を頂き、大変感謝申し上げます。
guest

0

読み出し元の問題は現在も残っていますが、「COM相互運用機能」で対応が可能という御回答を頂いておりますので、本件は「解決」と致します。

御回答頂きましたKoichiSugiyama 様に、心から感謝申し上げます。

投稿2015/12/16 02:15

htetsuro1021

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問