【最大10000ポイント】当たる!!質問投稿キャンペーン!

VC#でアドインを作ろうとしているのですが、「プロジェクト→参照の追加」でCOMコンポーネントの追加が上手くいきません。

例えば、
Microsoft Outlook 11.0 Object Library
を追加すると
ソリューション エクスプローラの参照設定に"Outlook"が追加はされるのですが、アイコンに!マークが付いていて、クリックすると
「利用可能でないか、またはビルトされてないため、このオブジェクトをオブジェクトブラウザで表示することができません。プロジェクトが利用可能でビルトされていることを確認してください。」
という警告が出ます。

参照の追加をするにあたって、他に何か事前にやっておくことが有るのでしょうか?

ちなみに、こちらの環境は
Visual Studio 2005 Standard SP1
Microsoft Office 2003 SP3
Internet Explorer 7.0
Windows XP SP2

このQ&Aに関連する最新のQ&A

A 回答 (1件)

まったくの推論ですが、一度プロジェクトをビルドしてみてください。


もしかすると、その段階でCOMの情報が収集されて、それ以降きちんと認識されるのかもしれません。オブジェクトブラウザはビルドで吐き出される情報を見ているのかな?(汗)
    • good
    • 0
この回答へのお礼

ape5さん、コメント有難うございます。
ですが、ビルドしても上手くいきません。


その後、いろいろ試しているうちに参照の追加が上手くいきました。
それは、Office 2003 SP2 のマシンでやってみた結果です。

それで、もとのマシンの Office 2003 SP3 をアンインストールして
Office 2003 を入れなおすと、問題なくCOMコンポーネント
の追加が成功します。

参照の追加では、各 Officeアプリの olbファイルを読み込む
のですが、Office 2003 SP3 では、どのolbファイル(Word,
Excel, Powerpoint, Outlook) でも読み込み不可でした。

なので、ファイルが壊れているとかではなくて、Office 2003 SP3
に原因があるのでは、と疑っています。


 

お礼日時:2008/03/10 21:52

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QC#でほかのファイルにある自作クラスを使用したい場合

最近Javaから移ってきたばかりのC#初心者です。
依然作ったことのあるほかのファイルにある自作クラスを
新しいファイルの自作クラスで使用したい場合、どうすれば
よいのでしょうか。
Form1.cs(8,7): error CS0246: 型または名前空間名 'Calc1' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
Form1.cs(12,19): error CS0246: 型または名前空間名 'Calc' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
上記のようなエラーが発生してしまいます。
なにとぞご助力をお願いいたします。

Aベストアンサー

#2>しかし、やはりうまくいきませんでした。
#1で言われているような、namespace, using 指定と参照設定でうまくいくと思うんですけど・

自作クラスを補足することはできますか?

Qオブジェクト(dll)のレジストリ登録について

いつもお世話になっております。

dllの使い方について教えてください。

vb5.0で開発を進めているのですが、
dllを呼び出す際に、レジストリ登録を
しなければいけないのでしょうか?

いくつかのサイトでは、参照設定際すれば、
実行できているようです。。

実行環境では、レジストリ登録しないと
動かない場合があるということでしょうか?

ご教授、よろしくお願いします。

Aベストアンサー

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「Successful」と出ればActiveX DLLだ。エントリポイントが見つかりません云々と言われたらそれはWin32ネイティブDLLという事。登録に失敗して環境を壊すという事はないのでとりあえず登録を試みてみれば良いのではないかな。

現在では大きく分けてDLLは3つある。
・Win32ネイティブDLL:レジストリ登録不要。パスの通った所に配置する。
・ActiveX DLL:レジストリ情報によって呼び出すDLL。レジストリに登録する。インプロセスCOMサーバと言っても差し支えないかもしれないがあるかもしれない。
・Microsoft .Net アセンブリ:レジストリの登録は不要。単純に実行ファイルと同じパスに配置するか、.Netにおけるレジストリといえるグローバルアセンブリキャッシュに登録する。

何のDLLか、によるが。

・あなたがVB5.0で作成したDLLを、開発に使ったマシン以外で使う。
→該当するマシンでレジストリに登録する必要があります。

・あなたがVB5.0で開発を行うにあたり使用するDLLを開発に使ったマシン以外で使う。
→VB5.0で参照設定できるのであれば、それと同じ方法で該当するマシンにDLLをインストールすれば同様にレジストリに登録済みとなる事でしょう。

よくわかんなければ次のようにしてみれば良いだろう。コマンドプロンプトを開いて
C:\>regsvr32 hogehoge.dll
これで「S...続きを読む

QC#で共有変数の定義をするには

C#で共有変数の定義をするには、どうしたらよいでしょうか。具体的には、起動パラメータで、任意の文字列(3~4バイト)を渡して、C#アプリケーションを、起動し、プログラムの任意の場所で、そのパラメータを参照したいと考えています。起動パラメータの受け取りは、できるのですが、そのパラメータを、プログラムのどこからも参照できる領域(ここの定義方法が不明)に格納するには、どうしたらよいでしょうか。(2重起動を許す前提です。実行時に1つの目のプログラムにはパラメータ"XYZ"を渡し、2つ目のプログラムを起動時にはパラメータ"ABCD"を渡し、その値により、プログラムの動作を制御したいと思っています)
Windows-xp visual-studio2008 C#でwindowsアプリケーションを作成しています。

Aベストアンサー

namespace test1
{
  static class Program
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      if (args.Length > 0)
      {
        strArg = args[0];
      }
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(new Form1());
    }
    // ここに記述
    static public string strArg = null;
  }
}

メインクラスのメンバーとしてスコープが有効な場所に記述します

namespace test1
{
  static class Program
  {
    /// <summary>
    /// アプリケーションのメイン エントリ ポイントです。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
      if (args.Length > 0)
      {
        strArg = args[0];
      }
      Application.EnableVisualStyles();
      Application.SetCompatibleTextRenderingDefault(false);
      Application.Run(n...続きを読む

QC#でフォームのオブジェクト名を変数名で指定

C#でフォームのオブジェクトを変数名で指定するにはどうしたらよいでしょうか?

例えば、フォームにラジオボタンrdo0~rdo9と、
それぞれに対応するテキストボックスtxt0~txt9が用意されている状態で、
rdo1がチェックされていたらtxt1に"OK"と表示、
rdo2がチェックされていたらtxt2に"OK"と表示・・・
といったことをfor文で実現する場合どのようにしたらよいでしょうか?
変数をオブジェクト名として認識させるための方法がわかりません。

どなたかご教授願います。


*********************************************
for(int i=0;i<10;i++)
{
 rdoname = "rdo" + i;
 txtname = "txt" + i;

 if((何らかの処理?)(rdoname).checked)
  (何らかの処理?)(txtname).txt = "OK";
}

****************************************
↑この、オブジェクトとして認識する為の「何らかの処理」部がわかりません。

C#でフォームのオブジェクトを変数名で指定するにはどうしたらよいでしょうか?

例えば、フォームにラジオボタンrdo0~rdo9と、
それぞれに対応するテキストボックスtxt0~txt9が用意されている状態で、
rdo1がチェックされていたらtxt1に"OK"と表示、
rdo2がチェックされていたらtxt2に"OK"と表示・・・
といったことをfor文で実現する場合どのようにしたらよいでしょうか?
変数をオブジェクト名として認識させるための方法がわかりません。

どなたかご教授願います。


************************...続きを読む

Aベストアンサー

参考URL参照。

参考URL:http://dobon.net/vb/dotnet/control/findcontrolbyname.html

Q上司に「ご報告まで」は失礼?

上司に対して些細な事をメールで報告する時に
メールの最後に「ご報告まで」と付けるのは失礼ですか?

「ご報告までです」ならOKですか?

Aベストアンサー

「ご報告まで」は「ご報告まで申し上げます」の省略形です。
上司に対しては失礼です。
「ご報告までです」は日本語としておかしいです。
省略しないで元の形のままにするか
「ご報告いたします」
「ご報告申し上げます」
でお願いします。

QAccessとSQL Serverの連携について

現在Accessで組まれているデータベースがあるのですが、複数人で入力をする必要が出てきたため、SQL Serverへ移行したいと思っています。
ただ、まだデータベースの内容が完全にFIXしておらず、項目に変更や追加が発生する可能性があります。

そこで、
●Accessを管理画面として使い、
●Access上で内容を変更したら、システム全体もその通り変わる
ような仕組みを作りたいのですが、可能でしょうか。
(完全にSQL Serverへ移行するのではなく、AccessとSQL Serverを連携させる?)

よき方法がありましたら教えて頂けましたら幸いです。
ちなみにコストはあまり大きくはかけられません・・。
どうぞよろしくお願いします。

(※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。なお、説明がおかしなこともあるかと思いますがご容赦ください。)

Aベストアンサー

>※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。

でもやることは十分玄人の領域な気が…。なので簡単に、は不可能でしょう。
以下、#1さんと同じように、AccessファイルからSQLServerへデータ読込、書込する環境を構築することを目指します。違うのは概要だけ。#1さんはきちんとシステムを構築する方法を書かれていますが、私は概要だけ。なんで概要だけかは後述。

(1)SQL Server Expressをダウンロードして、サーバー(もしくはサーバーに見立てたPC)にインストール。
(2)Accessのテーブルを(1)のSQL Serverに作成。
(3)ここからはPC側の作業
(4)ODBC接続を作成
(5)現行のAccessに(4)を使ってリンクテーブル作成。
(6)(5)のAccess内のクエリ、フォーム、レポートなどを必要に応じた修正を行う。
(7)動作確認
(8)各PCにODBC接続を設定&Accessファイルを配布。

概要はここまでです。如何でしょう、ご自分でできそうですか?

作業の概要はこの通りなんですが、サーバー機の選定とか"細かい"作業はかなり省略…というか書いてません書けません。特に(6)は実際にAccessファイルを見ないときっちりアドバイスはできませんし、作業ボリュームや難易度も見えてきません。…ということで(業者への発注は想定外のようですがw)業者も見積には難渋するでしょう。さくっと見積もりが出てくることもあるでしょうけど、かなりバッファをとった高額なお見積りかと。正直、見積もり作るのにお金がほしい内容です。

どうしてこんなことをグチグチ書いているかというと、大変申し上げにくいのですが、自称素人の方には難易度高め。業者に任せるか、類似のパッケージを探された方が、不具合などのリスクも軽減され、業務への影響も少ないかと。

ご健闘をお祈りしております。

>※私はシステムはど素人なので、なるべく簡単に教えて頂けたら嬉しいです。

でもやることは十分玄人の領域な気が…。なので簡単に、は不可能でしょう。
以下、#1さんと同じように、AccessファイルからSQLServerへデータ読込、書込する環境を構築することを目指します。違うのは概要だけ。#1さんはきちんとシステムを構築する方法を書かれていますが、私は概要だけ。なんで概要だけかは後述。

(1)SQL Server Expressをダウンロードして、サーバー(もしくはサーバーに見立てたPC)にインストール。
(2)Accessのテー...続きを読む


人気Q&Aランキング