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

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

ただいまの
回答率

90.75%

  • C#

    6550questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Visual Studio

    1695questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VBA

    1635questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • DLL

    80questions

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

C#で作成したDLLをVBAで使用したい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 811

shikasama

score 109

前提・実現したいこと

C#およびVBAで使用できるDLLを作成しようとしています。
C#で作成したDLLをVBAにて使用したいです。

現在持っている知識・考え
・CreateObject(DLLのアセンブリ名)で参照できる
・参照するためにはDLLをレジストリに登録しなければならない

 
現状
・regsvr32を使用してレジストリに登録しようとしたら以下のエラーが発生して登録できない。

モジュールは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした。

CreateObjectを使用したDLLの参照方法をご教示ください。

試したこと

・プロジェクトで以下を設定する
1.アセンブリをCOM参照可能にする
2.COM相互運用機能の登録
・regsvr32でDLLを登録しようとするもエラー

補足情報(言語/FW/ツール等のバージョンなど)

Visual Studio 2015
エクセル2010
.NET framework4.6

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

C#で作成したDLLはregsvr32ではなくRegAsm.exeを使います。
詳しくは下記参照ください。

C#で作成したDLLをExcelVBAで利用するにはregsvr32じゃなくてRegAsm.exeを使う

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/07 17:23

    RegAsm.exe で登録して実行してみましたがうまくいきませんでした。
    "Activex コンポーネントはオブジェクトを作成できません"というエラーが発生しました。
    もし、上記についてご存知でしたらお教えください。

    キャンセル

  • 2017/11/07 17:28

    DLLの作成がなっていないと思います。
    以下を参照してください。
    https://qiita.com/tomochan154/items/1ce33f2aef167c0fed9d

    キャンセル

  • 2017/11/09 09:02

    COMの書き方に則っていませんでした。
    実現できました。ありがとうございます。

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    アセンブリ言語のレジスタに64bitのアドレスを入れる方法

    x86_64系のアセンブリ言語を勉強しています。 レジスタの中にmovでメモリアドレスを直接代入したい場合などはどうすればよろしいのでしょうか? mov rax,0x000

  • 解決済

    変数が設定されていませんと表示されてしまう。

    前提・実現したいこと ここに質問したいことを詳細に書いてください ある表の中から条件に該当する行を抜き出すコード「vba」でを組んでいます。 なぜか「MsgBox "****

  • 解決済

    for テキスト書き込み

    Set sr = CreateObject("ADODB.Stream") sr.Charset = "UTF-8" sr.Open For i = 0 To UBound(

  • 解決済

    ADODB.Stream 保存時エラー

    ADODB.Streamでファイルを作成していてSaveToFileで保存する際に、 ’アプリケーション定義またはオブジェクト定義のエラーです’とエラーが発生します。 変数SA

  • 解決済

    VBAでIPMessengerを送信したいです。

    VBAでIPMessengerを送信したいのですがわかりません。 エラーとかの前に構文がまったく分からないです。 VBAでIPMessengerを自動送信したいと思っています。

  • 解決済

    【VBA】特定の文字までを取得する方法

    VBAのことでお聞きしたいことがあります。 ■やりたいこと ・サイトのディレクトリデータが入っている列から最後の「/」以降の文字を除いた文字を取得 例)「/test/tes

  • 受付中

    【VBA】サブディレクトリも含めたファイル一覧を素早く取得したい

    以下のSample1とSample2はどちらもC:\Tempのサブディレクトも含めたファイル一覧を取得する関数です。 Sample1は'Sample2'よりも実行時間が短いですが、

  • 受付中

    VBAのexec()について

    外部batファイルをexec()で実行しました。 ですがその際、StdOutには4096バイトしか出力出来ないそうで、結果が途中までしか出力出来ません。 batファイルを複数に分け

同じタグがついた質問を見る

  • C#

    6550questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Visual Studio

    1695questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • VBA

    1635questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • DLL

    80questions

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