VB6.0では、DLLを利用する際の宣言部分で、パスを""で括った静的な記載でなく、動的な記載にできるのでしょうか。
色々と調べてみたのですが、イマイチピンとくるものがなかったので質問させていただきました。
例:Public Declare Function Ztest Lib "C:\Test1\Test2" Alias "Test3" (ByVal data1 As Long) As Long
↓動的に変更したい
Public Declare Function Ztest Lib "○○:\Test1\Test2" Alias "Test3" (ByVal data1 As Long) As Long
No.1ベストアンサー
- 回答日時:
できません。
Declareの場所は大域変数の宣言、つまり定数などを定義する
領域です。これをプログラム実行中に変更しようという行為
ですから、ダメな理由は分かると思います。
Basicではポインタを使用してメソッドを呼び出す手段が
ありません。よって、動的なDLLのロードを行い、関数の
アドレスを得ることはできますが、そこへ制御を移す手段が
無いのです。
但し、同じファイル名のDLL(中身は異なる)を別フォルダに
保存しておき、動的にどちらのフォルダからロードさせるかを
決めることはできます。方法はクラスオブジェクトを使います。
例えば、Class1に以下のような定義をします。
Private Declare Function Ztest Lib "Test1\Test2" _
Alias "Test3" (ByVal data1 As Long) As Long
Public Function ZCall(ByVal data1 As Long) As Long
ZCall = Ztest(data1)
End Function
呼び出し側は次のようにします。
Dim C As Class1
Dim A1 As Long, A2 As Long
SetCurrentDirectory "C:\AAA" 'カレント切り替え
Set C = New Class1 'インスタンス生成
A1 = C.ZCall(0) 'メソッド実行
Set C = Nothing 'インスタンス消滅
SetCurrentDirectory "C:\BBB" 'カレント切り替え
Set C = New Class1 'インスタンス生成
A2 = C.ZCall(0) 'メソッド実行
Set C = Nothing 'インスタンス消滅
DLLがシステムディレクトリになければカレントを探します。
クラスオブジェクトはインスタンス生成の度にDLLをロード
しますので、その時にカレントを切り替えておくと似たような
処理にすることができます。標準モジュールは静的な空間なので、
ここでDLLを定義すると、ロードされたDLLを解放できません。
No.2
- 回答日時:
返信が送れて申し訳ありません。
リンク先確認しました。
VB初心者ながら読んで理解してみましたが、残念ながら、やりたいことと少し違うように感じました。ただ、こういうことは可能だということは覚えておきます。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) 【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法 4 2022/12/08 20:53
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) excel vba 参照渡しと値渡し 2 2022/04/27 10:45
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBから参照できないCのDLLを使用する方法
Visual Basic(VBA)
-
DLLをREGSVR32しないで利用する方法について。
Visual Basic(VBA)
-
オブジェクト(dll)のレジストリ登録について
Visual Basic(VBA)
-
-
4
VB6.0を使用しています
Visual Basic(VBA)
-
5
VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてく
IT・エンジニアリング
-
6
Cで作成したDLL関数をVBから呼び 引数渡し方法
Visual Basic(VBA)
-
7
VB2010で作成したdllからtlbが作れない
Visual Basic(VBA)
-
8
VB(6.0)で作成したDLLをVB(.Net)で呼び出す方法
Visual Basic(VBA)
-
9
VBプログラムの終了
Visual Basic(VBA)
-
10
regsvr32で登録された一覧を知りたい
UNIX・Linux
-
11
VBの「As String * 128」とは?
Visual Basic(VBA)
-
12
ソースから参照しているOCXの一覧を確認する方法
Visual Basic(VBA)
-
13
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
14
VB.NETでActiveX(OCXファイル)作成
Visual Basic(VBA)
-
15
関数がDLLファイル内に見つかりません!
Visual Basic(VBA)
-
16
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
17
ActiveX DLL と ActiveXコントロールの違い
Visual Basic(VBA)
-
18
バージョンナンバーの取得
Visual Basic(VBA)
-
19
VB:「実行時エラー53 実行ファイルが見つかりません」
Visual Basic(VBA)
-
20
VB6 - DLLの動的リンクの方法について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
String a = "a"; と String b =...
-
C#において、同じインスタンス...
-
文字列を日付に変換でParseExce...
-
他のファイルの変数参照
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
C#「オブジェクト参照が必要で...
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
SerialPort処理でInvokeメソッ...
-
「インスタンス」の意味をわか...
-
【java】コンストラクタの処理...
-
インスタンスを同じ名前で作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報