C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
掲示板トップ
C# と VB.NET のサンプル
新規作成
利用方法/規約
ツリー表示
トピック表示
ランキング
記事検索
過去ログ
■103477
/ 4階層)
VBAから扱えるDLLの作成
□投稿者/ 魔界の仮面弁士
(3817回)-(2024/12/11(Wed) 11:30:50)
■
No103475
(あずさ2号 さん) に返信
> 私としては、登録等などOSに手をかけない方法がいいでんすが・・・
一応、COM にもレジストリ登録不要な Side-by-side インストールの仕組みはありますが、
Office からは Registration-Free COM を利用できなかったんじゃないかな…。
なので COM参照タイプのDLL (ActiveX DLL) を採用するなら、レジストリ登録が必須になるはずです。
ストアアプリ版の Office だと、それすら呼び出せなかったりもするようですが。
別案としては、VBA から Declare ステートメントで呼び出すタイプの関数公開型 DLL を作るか
https://qiita.com/mania3bb2007/items/020bea59e7c35c3204d3
https://github.com/3F/DllExport
あるいは、標準入出力でデータをやりとりする EXE を作って
それを VBA から WshShell の Exec メソッドで操作するという手も。
https://atmarkit.itmedia.co.jp/ait/articles/0407/08/news101_3.html
https://rcie.hatenablog.com/entry/2023/02/19/134601
> EXCElが32ビットなら、DLLも32ビットであることとネットで見たような気がします。
> 作成したDLL自体が、どちらなのか、新たな問題が発生しそうです。
DLL が x86 なのか x64 なのか AnyCPU なのかなどは、ビルド時に指定できます。
ビルド済みの .NET 製 DLL の状態を調べたい場合は、corflags.exe にて確認できます。
COM DLL の場合、32bitと64bitとで別管理されているため、レジストリ登録は
登録したい側もしくは両方でそれぞれ実施する必要があります。
>
https://liclog.net/vba-dll-create-5/#google_vignette
URL 末尾の #google_vignette は要らないです。
https://coffee.hidetani.com/archives/658
でもって、そのサイトに書かれているのは COM 公開型の DLL の話ではなく、
Declare ステートメント等で使う関数公開型の DLL の話です。
VB や C# には、標準では関数公開型を作る機能は無いので、どうしても必要なら
先ほど述べた DllExport などを併用することになるでしょう。
>
https://excel.syogyoumujou.com/memorandum/dll_1.html
←前質問で記載済みのURL
こちらは COM 公開型の DLL 向けの情報です。まったく別の話。
編集キー/
編集
前の記事
(元になった記事)
次の記事
(この記事の返信)
←Re[3]: VBAから扱えるDLLの作成
/あずさ2号
返信無し
上記関連ツリー
VBAから扱えるDLLの作成
/ あずさ2号
(24/12/10(Tue) 15:21)
#103472
└
Re[1]: VBAから扱えるDLLの作成
/ くま
(24/12/10(Tue) 15:58)
#103473
└
Re[2]: VBAから扱えるDLLの作成
/ くま
(24/12/10(Tue) 16:07)
#103474
└
Re[3]: VBAから扱えるDLLの作成
/ あずさ2号
(24/12/11(Wed) 10:51)
#103475
├
VBAから扱えるDLLの作成
/ 魔界の仮面弁士
(24/12/11(Wed) 11:30)
#103477
←Now
└
Re[4]: VBAから扱えるDLLの作成
/ くま
(24/12/11(Wed) 11:23)
#103476
└
Re[5]: VBAから扱えるDLLの作成
/ radian
(24/12/13(Fri) 10:21)
#103478
└
Re[6]: VBAから扱えるDLLの作成
/ あずさ2号
(24/12/24(Tue) 17:31)
#103481
解決済み
上記ツリーを一括表示
/
上記ツリーをトピック表示
上記の記事へ返信
入力内容にタグは利用できません。
他人を中傷する記事は管理者の判断で予告無く削除されます。
半角カナは使用しないでください。文字化けの原因になります。
名前、コメントは必須記入項目です。記入漏れはエラーになります。
入力内容の一部は、次回投稿時の手間を省くためブラウザに記録されます。
URL は自動的にリンクされます。
記事中に No*** のように書くとその記事にリンクされます(No は半角英字/*** は半角数字)。
名前
(*必須)
E-Mail (任意)
Web サイト (任意)
投稿モード
通常モード
図表モード (ソースコードを貼る場合はこちらを使用)
本文
(質問の場合は、開発環境・使用言語のバージョンなどを最初に書いてください)
■No103477 (魔界の仮面弁士 さん) に返信 > ■No103475 (あずさ2号 さん) に返信 >>私としては、登録等などOSに手をかけない方法がいいでんすが・・・ > > 一応、COM にもレジストリ登録不要な Side-by-side インストールの仕組みはありますが、 > Office からは Registration-Free COM を利用できなかったんじゃないかな…。 > > なので COM参照タイプのDLL (ActiveX DLL) を採用するなら、レジストリ登録が必須になるはずです。 > ストアアプリ版の Office だと、それすら呼び出せなかったりもするようですが。 > > > 別案としては、VBA から Declare ステートメントで呼び出すタイプの関数公開型 DLL を作るか > https://qiita.com/mania3bb2007/items/020bea59e7c35c3204d3 > https://github.com/3F/DllExport > > あるいは、標準入出力でデータをやりとりする EXE を作って > それを VBA から WshShell の Exec メソッドで操作するという手も。 > https://atmarkit.itmedia.co.jp/ait/articles/0407/08/news101_3.html > https://rcie.hatenablog.com/entry/2023/02/19/134601 > > > >>EXCElが32ビットなら、DLLも32ビットであることとネットで見たような気がします。 >>作成したDLL自体が、どちらなのか、新たな問題が発生しそうです。 > DLL が x86 なのか x64 なのか AnyCPU なのかなどは、ビルド時に指定できます。 > ビルド済みの .NET 製 DLL の状態を調べたい場合は、corflags.exe にて確認できます。 > > COM DLL の場合、32bitと64bitとで別管理されているため、レジストリ登録は > 登録したい側もしくは両方でそれぞれ実施する必要があります。 > >>https://liclog.net/vba-dll-create-5/#google_vignette > URL 末尾の #google_vignette は要らないです。 > https://coffee.hidetani.com/archives/658 > > でもって、そのサイトに書かれているのは COM 公開型の DLL の話ではなく、 > Declare ステートメント等で使う関数公開型の DLL の話です。 > VB や C# には、標準では関数公開型を作る機能は無いので、どうしても必要なら > 先ほど述べた DllExport などを併用することになるでしょう。 > >>https://excel.syogyoumujou.com/memorandum/dll_1.html ←前質問で記載済みのURL > こちらは COM 公開型の DLL 向けの情報です。まったく別の話。
編集キー
自分の投稿を編集する時に必要です
(半角8文字以内)
解決済み
/
解決したらチェックしておきましょう。
プレビュー/
管理者用
-
Child Tree
-