会社の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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
Windows10のVBAでDirectX 8が使...
-
VB2008→VB2010でエラーが出てま...
-
Pythonのjupiter Labを使ってます
-
VBAの参照設定について
-
VB.Net リビルド 意味不明なメ...
-
VB.NETでDLLを読み込ませる時に...
-
Using System.Drawing がうまく...
-
VB6.0で作成したプロジェクトの...
-
VB.NETで参照設定したDLLの修正...
-
C#ソースをCSCファイルにてコン...
-
vba 時間の引き算 例えば 15:00...
-
「読み込み違反」が起きたとき...
-
WinSCPで画像のように puttyを...
-
アウトルックが起動しているか...
-
印刷ダイアログを表示させない方法
-
matplotlibで任意の角度の円弧...
-
Process.Startで起動したアプリ...
-
実行ファイル(.exe)が別のPC...
-
excel vbaから実行するexe実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
意味不明の実行時エラーで困っ...
-
ManagementClassが見つからない。
-
IT初心者です 仕事で、vb.netで...
-
VB.NETで参照設定したDLLの修正...
-
C#ソースをCSCファイルにてコン...
-
オブジェクト(dll)のレジストリ...
-
VB.Net リビルド 意味不明なメ...
-
DLLを作成してVBAから使用する...
-
ビルドが実行できない 先へ進...
-
VB2010で作成したdllからtlbが...
-
Pythonのjupiter Labを使ってます
-
VB2008→VB2010でエラーが出てま...
-
Using System.Drawing がうまく...
-
SOAP通信。恥を忍んで質問させ...
-
Windows10のVBAでDirectX 8が使...
-
VB.NETでDLLを読み込ませる時に...
-
VBAからDLLをCALLしたいのですが
-
msvcr120d.dllがないというエラー
-
EXCEL2000でVBAでWinsockをしたい
-
C#でSystem.IO.FileFormatEx
おすすめ情報