VB6でDLLを読み込むには?

解決


マグ  2004-07-16 19:14:58  No: 114853

エクセルの質問ですけど、エクセルのマクロってVB6ですか?
それで、DLLファイルをエクセルで読み込ませたいのですけど、
やり方を教えてください。

それと、エクセルでDirectX9.0を使うこともできますか?


魔界の仮面弁士  2004-07-16 20:08:44  No: 114854

> エクセルの質問ですけど、エクセルのマクロってVB6ですか?

VB6 と Excel VBA 6.0 は、厳密には別物となります。
…構文は良く似ていますけれどね。

そもそも、Excelで使える「マクロ」には、いろいろな種類があります。

Excel 5.0 for Mac で、"AppleScript" を使う事が、
Excel 2002 for Win で、"Excel 4.0マクロ" を使うこともできます。

ただ、現在では "Excel VBA"が一般的です。(少なくともWin版では)
# VBA = Visual Basic for Applications

とりあえず Excel VBAに限って見てみると、言語バージョンとしては
Excel 5.0 に搭載されている物が、VBA 5.0 というバージョン、
Excel 2000 の物は、VBA 6.0 というバージョンとなっています。

そして、VBA 6.0 には、単体の言語製品としての「Visual Basic 6.0」に
相当する実装が含まれています。

# Excel 2000以降のエディタ画面にある、「バージョン情報」に
# "Microsoft Visual Basic 6.0" と表示されるのは、この
# VBAのバージョンを示しているためです。

> それで、DLLファイルをエクセルで読み込ませたいのですけど、
> やり方を教えてください。

どんなDLLを、何のために読み込ませたいのかがわからないので、
具体的な回答はできませんが、一般論としては:

標準的なDLL (user32.dllなど)の機能をAPIとして呼び出したいなら、
Declareステートメントで宣言して、利用する事になります。

ActiveX DLLを利用したい、という意味なら、参照設定して利用できます。

ActiveX DLLのタイプライブラリ情報を取得したい、という事であれば、
TLBINF32.DLL のオブジェクトを使って取得する事ができます。

DLLの内容(例えば、PEヘッダやセクションヘッダ情報など)を
表示したいだけなら、Get#ステートメントで読み込めます。

> それと、エクセルでDirectX9.0を使うこともできますか?
可能です。


マグ  2004-07-17 00:02:50  No: 114855

>ActiveX DLLを利用したい、という意味なら、参照設定して利用できます。

ところで、エクセルのどこに参照設定があるのでしょうか?
たとえば、自分で作ったDLLファイルなどを読み込む際、
DLLの最初の宣言をしなければいけないんですが、
Declareステートメントの宣言方法でもよいのでしょうか?
もし、それでもいいのでしたら、
記述方法を教えてください。
お願いします。


魔界の仮面弁士  2004-07-17 00:32:12  No: 114856

> ところで、エクセルのどこに参照設定があるのでしょうか?
Alt + F11 で VBAエディタ画面になりますよね。
その画面のメニューにある、[ツール]-[参照設定]という項目です。

> たとえば、自分で作ったDLLファイルなどを読み込む際、
どのタイプのDLLでしょうか? それによって、使い方は変わりますよ。
# DLLによっては、Excel VBAに非対応の物さえありますし。

> Declareステートメントの宣言方法でもよいのでしょうか?
「VB/VBAに対応したActiveX DLL」ならば、Declareは使いません。参照設定のみです。
逆にActiveX DLLで無いのなら、参照設定は使わず、Declare宣言する必要があります。


マグ  2004-07-17 19:53:09  No: 114857

>Alt + F11 で VBAエディタ画面になりますよね。
>その画面のメニューにある、[ツール]-[参照設定]という項目です。

見つかりました。
ありがとうございます。

>どのタイプのDLLでしょうか? それによって、使い方は変わりますよ。
># DLLによっては、Excel VBAに非対応の物さえありますし。

VB.NETやC++やC#などのDLLってエクセルに使うことが出来ますか?


魔界の仮面弁士  2004-07-18 01:22:17  No: 114858

> VB.NETやC++やC#などのDLLってエクセルに使うことが出来ますか?

出来ますが、どのようにして使うのか、にもよりますよ。

たとえば、Excel のアドインDLLとして使う場合と、
Excel VBAから呼び出して使うのとでは、DLL側に
求められる仕様が、まるで異なりますし。

VB.NET や C# の場合、.NETアセンブリとして DLL を作成するだけでは、
Excelから呼ぶ事はできません。ただし、その .NET アセンブリを、
COMコンポーネントとして作成してやれば、Excel VBA から、それを
参照設定したり、CreateObject関数で呼び出したりする事が可能となります。


マグ  2004-07-18 04:59:34  No: 114859

ところで、
COMコンポーネントってどういう意味でしょうか?

よく、見るんですが・・・
意味が分かりません。(TT)

教えてください。
お願いします。


魔界の仮面弁士  2004-07-19 03:05:05  No: 114860

> COMコンポーネントってどういう意味でしょうか?
COM = Component Object Model の略で、component は、
特定の機能を満たす部品、という程度の意味です。

とりあえずは、「ActiveX コンポーネント」と同じ意味に受け取ってください。


マグ  2004-07-21 01:38:54  No: 114861

意味が分かりました。
ありがとうございます。

宿題が大変で返答が遅れてすみませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加