![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBから参照できないCのDLLを使用する方法
Visual Basic(VBA)
-
DLLをREGSVR32しないで利用する方法について。
Visual Basic(VBA)
-
VB6.0を使用しています
Visual Basic(VBA)
-
-
4
VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてく
IT・エンジニアリング
-
5
オブジェクト(dll)のレジストリ登録について
Visual Basic(VBA)
-
6
Cで作成したDLL関数をVBから呼び 引数渡し方法
Visual Basic(VBA)
-
7
VBプログラムの終了
Visual Basic(VBA)
-
8
VB2010で作成したdllからtlbが作れない
Visual Basic(VBA)
-
9
VB:「実行時エラー53 実行ファイルが見つかりません」
Visual Basic(VBA)
-
10
Form_Load と Form_Activate のタイミング
Visual Basic(VBA)
-
11
バージョンナンバーの取得
Visual Basic(VBA)
-
12
VB(6.0)で作成したDLLをVB(.Net)で呼び出す方法
Visual Basic(VBA)
-
13
VB6 開発環境のエディタに行番号を表示
Visual Basic(VBA)
-
14
VB6で7-ZIPのAPIを使用した圧縮でフォルダが消えてしまいます
Visual Basic(VBA)
-
15
VBの「As String * 128」とは?
Visual Basic(VBA)
-
16
VB6.0 SHELLで起動したプログラムを終了さしたいのですが
Visual Basic(VBA)
-
17
ActiveX DLL と ActiveXコントロールの違い
Visual Basic(VBA)
-
18
関数がDLLファイル内に見つかりません!
Visual Basic(VBA)
-
19
VB6.0-整数と余りを求める
Visual Basic(VBA)
-
20
任意のフォームが表示されているかを知りたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
フォームの存在をチェックする方法
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
生成したインスタンスを削除す...
-
「インスタンス」の意味をわか...
-
C#の構造体の開放のしかた
-
インスタンスを共有するには
-
SQLを連続発行する時の正しい(?...
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
エクセル(複数インスタンス)...
-
C#において、同じインスタンス...
-
オブジェクト参照がオブジェク...
-
マルチスレッド間でデータ交換...
-
カンマ区切りの数値文字列を数...
-
データベースから日付型を取得...
-
クラスのインスタンス名をクラ...
-
Objective-C グローバル変数 値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
複数の変数を宣言する時、同時...
-
VB.NET getとsetの概念がわかり...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
C# インスタンスの破棄
-
文字列を日付に変換でParseExce...
-
String a = "a"; と String b =...
-
「インスタンス」の意味をわか...
-
変数の参照でエラーが出てしま...
-
フォームの存在をチェックする方法
-
SQLを連続発行する時の正しい(?...
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
他のファイルの変数参照
-
C#「オブジェクト参照が必要で...
-
エクセル(複数インスタンス)...
-
VB6.0で、DLLを動的に参照したい
おすすめ情報