![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
会社のPCでは問題なく動作するVBAが自宅PCでは動作しません。
プログラムの初期段階(宣言段階)で「実行時エラー'429'
ActiveX コンポーネントはオブジェクトを作成できません。」
とエラーになります。対処方法をお教えいただきたく質問させ
ていただきました。
PCの環境は次の通りです。
---------------------------------------------------------
'動作する環境(会社)
Windows7(32Bit)Excel2013(32Bit)
参照設定:DirectX 8 For Visual Basic Type Library
場所:C:\Windows\System32\dx8vb.dll
'動作できない環境(自宅)
Windows10(64Bit) Excel2016(64Bit)
参照設定:DirectX 8 For Visual Basic Type Library
(参照不可の表示はありません)
場所:C:\Windows\System32\dx8vb.dll
自宅PCをエクスプローラーでファイルの存在を確認したところ
C:\Windows\System32には、dx8vb.dllが存在しますが
C:\Windows\SysWOW64には、存在しません。
-------------------------------------------------------------
またネット検索で見つけた次の処置は自宅PCに実施済です。
コントロールパネル
レガシーコンポーネント
Direct Play
にチェックを入れました。
-------------------------------------------------------------
ソースの一部(Formモジュールに記載)
'##################################
' 参照設定:DirectX 8 For Visual Basic Type Library
'##################################
Implements DirectXEvent8
'マウス用バッファサイズ
Private Const MAX_BUFFERSIZE As Long = 10
'DirectXオブジェクト
Private mDX As DirectX8
'DirectInputオブジェクト
Private mDI As DxVBLibA.DirectInput8
'マウス用DirectInputDeviceオブジェクト
Private mDIDevM As DxVBLibA.DirectInputDevice8
'マウス用イベントハンドル
Private mhEventM As Long
'キー用DirectInputDeviceオブジェクト
Private mDIDevK As DxVBLibA.DirectInputDevice8
'キー用イベントハンドル
Private mhEventK As Long
以下処理プログラムは省略します。
ご指導、ご教示のほどよろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
ANo.1です。
残念ながらDirectX12をVBAから使える簡便な方法はないと思われます。
VBAからDirectXを使うというのはDirectX7,8ころの技術で、DirectX9以降では対応していない様子です。ついでにいうとDirectX9から色々と変わっているので単純に対応させるようなことはできないと思います。だからこそ未だにdx8vb.dllが使われているのでしょう。
可能な対処法は、Excelを32bit版に入れ替えて、dx8vb.dllを
C:\Windows\SysWOW64
におくことでしょう。これで確かに動くかは未確認ですが。
なんにせよ、dx8vb.dllが32bitDLLなら64 bit Winowsの
C:\Windows\System32\dx8vb.dll
においておくことは無意味ですので、確認して除去すべきでしょう。
rinkunさん再度のご指導いただきありがとうございます。
残念ながらDirect Xはあきらめることにします。
キーボードの検知だけならGetAsyncKeyState()などで可能なのですが、
マウスの(特にホイールの回転)を検知したくDxVBLibA.DirectInputDevice8
にこだわりました。
まもなく定年を迎え、残る人生のライフワークとして、車椅子の自動運転をサ
ポートできるシステムの開発に取組もうと今から準備中です。
車輪の回転をマウスのホイールに伝える仕組みは日曜大工レベルで可能かなと
思っています。
車輪の回転に合わせてホールが前後にどれだけ回転したか。その時間経過はど
れだけか等をPCに取込めば車椅子の速度や位置や動作が認識できると考えてい
ます。
とまぁ自分の老後(既に老人ですが)の趣味のビジョンは置くとして、マウス
のホイールの回転を定量的に検知できるAPIをご紹介いただければ幸いです。
No.1
- 回答日時:
Windows10のパソコンに含まれるdx8vb.dllは64bit用ですか。
ソフトの時代的に32bit版しかないように思いますが、そうだとしたらWindowsはともかくExcelが64bit版だとDirectX8は動作できないと思います。
一般にWindowsの64bit版で32bit版アプリケーションは動作しますが、64bit版アプリケーション(プロセス)から32bit版dllを呼び出すことはできません。
Excel2016の64bit版にVBAコードを32bitプロセスとして動かすようなギミックが入っていれば別ですが、そうでない限りは動かないと思われます。
# IEは64bitと32bitが混在して32bitアドインを動かせるようになっている
rinkunさん、ご指導ありがとうござます。
よく理解できました。まず自宅PCに入っているであろうDirectXを確認することから
始めました。
DirectX 診断ツール(dxdiag)というので診断してみました。
DirectX バージョン:DirectX 12 と表示されました。
DirectX が入っていることはこれで確認できたと思っていいのかな?
まあ、とにかく先へ進むこととします。っとここでいきなりつまずきました。
参照設定でDirectX 12の参照設定の方法がわかりません。
それらしいLibraryがありませんし、「参照」で探すにもdllの名前もわかりません。
さらに、その先で予測される「つまずき」は、ソース内でImplements DirectXEvent8
の部分やその他Private mDX As DirectX8の部分を単に8を12に書き換えて、めでたし
めでたしとはきっとならないのでしょうね。
もうすこし、七転八倒してみます。
さらにご指導いただければ幸甚です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) エクセルのマクロとシートの保護について教えてください。 1 2022/10/18 08:36
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
chatgpt 4oを使っています。あ...
-
意味不明の実行時エラーで困っ...
-
IT初心者です 仕事で、vb.netで...
-
ビルドが実行できない 先へ進...
-
VB.NETで参照設定したDLLの修正...
-
VBAからDLLをCALLしたいのですが
-
ManagementClassが見つからない。
-
VB.Net リビルド 意味不明なメ...
-
MS Visual Studio 6.0のEnterpr...
-
Using System.Drawing がうまく...
-
msvcr120d.dllがないというエラー
-
VB.NETでDLLを読み込ませる時に...
-
visual studio 2013 エラー
-
VB2010で作成したdllからtlbが...
-
VS2005のセットアッププロジェ...
-
オブジェクト(dll)のレジストリ...
-
Designer.vbは直接コードをいじ...
-
Visual Studio 「AnyCpu」について
-
vba 時間の引き算 例えば 15:00...
-
excel vbaから実行するexe実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
IT初心者です 仕事で、vb.netで...
-
ManagementClassが見つからない。
-
VB2010で作成したdllからtlbが...
-
VB.NETで参照設定したDLLの修正...
-
VB.Net リビルド 意味不明なメ...
-
オブジェクト(dll)のレジストリ...
-
C#ソースをCSCファイルにてコン...
-
Using System.Drawing がうまく...
-
ビルドが実行できない 先へ進...
-
VB.NETでDLLを読み込ませる時に...
-
SOAP通信。恥を忍んで質問させ...
-
DLLを作成してVBAから使用する...
-
Windows10のVBAでDirectX 8が使...
-
VB2008→VB2010でエラーが出てま...
-
VBAの参照設定について
-
Pythonのjupiter Labを使ってます
-
msvcr120d.dllがないというエラー
-
EXCEL2000でVBAでWinsockをしたい
-
ExcelでVBAで自動参照設定
おすすめ情報