エクセルのVBAでWSAStartup()関数を、実行すると・・・
実行時エラー '53':
ファイルが見つかりません:ws2_32.lib
というメッセージボックスがでてきて実行できません。
宣言は下記のとおりです。
Private Const WSADESCRIPTION_LEN As Long = 256
Private Const WSASYS_STATUS_LEN As Long = 128
Private Type WSAData
wVersion As Integer
wHighVersion As Integer
szDescription(0 To WSADESCRIPTION_LEN) As Byte
szSystemStatus(0 To WSASYS_STATUS_LEN) As Byte
iMaxSockets As Long
iMaxUdpDg As Long
lpVendorInfo As Long
End Type
Private Declare Function WSAStartup Lib "ws2_32.lib" (ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long
エクセルのバージョンは2000で、マシンはWin2000です。
Lib "ws2_32.lib"
のところを
Lib "c:\winnt\system32\ws2_32.lib"
としてもだめでした。もちろん「ws2_32.lib」は「c:\winnt\system32」にあります。
WSAStartup()を呼び出す前に、
ChDrive "C"
ChDir "C:\WINNT\system32"
としてカレントディレクトリをファイルの場所に移動してもだめでした。
どなたか解決策ごご存知でしたらご教授ください。お願いします。
Ws2_32.dllを使ったことはないのですが
なぜDLLを使いたいのにタイプライブラリを参照してるのでしょう?
Private Declare Function WSAStartup Lib "ws2_32.lib" _
(ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long
を下記に訂正しては?
Private Declare Function WSAStartup Lib "Ws2_32.dll" _
(ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long
うっ・・
libとdllを間違えているなんて・・
ご指摘ありがとうございました。解決しました。
Libファイルは、(静的にリンクされるコード)ライブラリファイルです。
DLLファイルは、動的にリンクされるコードライブラリファイルです。
タイプライブラリというのは、VBなどで「参照設定」できる型情報
(定数、変数のみの構造体、COMインターフェース、DLLからのStaticな関数)
をその内部で定義してあるもので、単独だと普通の拡張子はtlbですよね。
# 混ぜるな危険、ということで。
ツイート | ![]() |