エクセルの質問ですけど、エクセルのマクロってVB6ですか?
それで、DLLファイルをエクセルで読み込ませたいのですけど、
やり方を教えてください。
それと、エクセルでDirectX9.0を使うこともできますか?
> エクセルの質問ですけど、エクセルのマクロって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を使うこともできますか?
可能です。
>ActiveX DLLを利用したい、という意味なら、参照設定して利用できます。
ところで、エクセルのどこに参照設定があるのでしょうか?
たとえば、自分で作ったDLLファイルなどを読み込む際、
DLLの最初の宣言をしなければいけないんですが、
Declareステートメントの宣言方法でもよいのでしょうか?
もし、それでもいいのでしたら、
記述方法を教えてください。
お願いします。
> ところで、エクセルのどこに参照設定があるのでしょうか?
Alt + F11 で VBAエディタ画面になりますよね。
その画面のメニューにある、[ツール]-[参照設定]という項目です。
> たとえば、自分で作ったDLLファイルなどを読み込む際、
どのタイプのDLLでしょうか? それによって、使い方は変わりますよ。
# DLLによっては、Excel VBAに非対応の物さえありますし。
> Declareステートメントの宣言方法でもよいのでしょうか?
「VB/VBAに対応したActiveX DLL」ならば、Declareは使いません。参照設定のみです。
逆にActiveX DLLで無いのなら、参照設定は使わず、Declare宣言する必要があります。
>Alt + F11 で VBAエディタ画面になりますよね。
>その画面のメニューにある、[ツール]-[参照設定]という項目です。
見つかりました。
ありがとうございます。
>どのタイプのDLLでしょうか? それによって、使い方は変わりますよ。
># DLLによっては、Excel VBAに非対応の物さえありますし。
VB.NETやC++やC#などのDLLってエクセルに使うことが出来ますか?
> VB.NETやC++やC#などのDLLってエクセルに使うことが出来ますか?
出来ますが、どのようにして使うのか、にもよりますよ。
たとえば、Excel のアドインDLLとして使う場合と、
Excel VBAから呼び出して使うのとでは、DLL側に
求められる仕様が、まるで異なりますし。
VB.NET や C# の場合、.NETアセンブリとして DLL を作成するだけでは、
Excelから呼ぶ事はできません。ただし、その .NET アセンブリを、
COMコンポーネントとして作成してやれば、Excel VBA から、それを
参照設定したり、CreateObject関数で呼び出したりする事が可能となります。
ところで、
COMコンポーネントってどういう意味でしょうか?
↑
よく、見るんですが・・・
意味が分かりません。(TT)
教えてください。
お願いします。
> COMコンポーネントってどういう意味でしょうか?
COM = Component Object Model の略で、component は、
特定の機能を満たす部品、という程度の意味です。
とりあえずは、「ActiveX コンポーネント」と同じ意味に受け取ってください。
意味が分かりました。
ありがとうございます。
宿題が大変で返答が遅れてすみませんでした。
ツイート | ![]() |