|
はじめまして。
早速ですが質問をさせていただきます。
今、FTPを使ってサーバーにファイルを送信するPGを作成しています。
ファイルに『送信ボタン』があり、
ボタンを押すと、裏で同じファイルを作成し送信するというものです。
問題は、一通りの処理終了後、エクセルと閉じようとすると応答しなくなってしまいます。
上書き保存などはできるのですが・・・。
調査の結果、どうやらInternetConnectのあたりがいけないようなのですが、
(InternetConnectの部分をコメント化すると問題なく閉じることができます)
コネクト後も間違いなくInternetCloseHandleを行っています。
いったい何が問題なのでしょうか?
ご指導願います。
以下が、作成したPGです。
Function FtpPut(strFtpSvr As String, strUserID As String, strPassword As String, strRemoteFile As String, strLocalFile As String) As Boolean
Dim hInternet As Long
Dim hFTP As Long
Dim lngret As Long
Dim strErrText As String
FtpPut = True
On Error GoTo ErrHandler
'ネットにつなぐ準備
hInternet = InternetOpen(vbNullString, _
INTERNET_OPEN_TYPE_PRECONFIG, _
vbNullString, _
vbNullString, _
0&)
If hInternet = 0 Then
strErrText = "InternetOpen:GetLastError=" & Err.LastDllError()
MsgBox strErrText, vbOKOnly + vbExclamation, "<FtpPut>"
FtpPut = False
Exit Function
End If
'ネットにつなぐ
hFTP = InternetConnect(hInternet, _
strFtpSvr, _
INTERNET_DEFAULT_FTP_PORT, _
strUserID, _
strPassword, _
INTERNET_SERVICE_FTP, _
0&, _
0&)
If hFTP = 0 Then
strErrText = "InternetConnect:GetLastError=" & Err.LastDllError()
MsgBox strErrText, vbOKOnly + vbExclamation, "<FtpPut>"
FtpPut = False
InternetCloseHandle (hInternet)
Exit Function
End If
'ファイルを送る
lngret = FtpPutFile(hFTP, _
strLocalFile & vbNullChar, _
strRemoteFile & vbNullChar, _
FTP_TRANSFER_TYPE_BINARY, _
0&)
lngret = InternetCloseHandle(hFTP)
lngret = InternetCloseHandle(hInternet)
Exit Function
ErrHandler:
FtpPut = False
MsgBox "<" & Err & ">" & Error(Err), vbOKOnly + vbExclamation, "<FtpPut>"
End Function
------------------------------------------------------------------------------------
'API宣言
Public Declare Function InternetOpen Lib "WinInet.DLL" Alias "InternetOpenA" (ByVal lpszAgent As String, ByVal dwAccessType As Long, ByVal lpszProxyName As String, ByVal lpszProxyBypass As String, ByVal dwFlags As Long) As Long
Public Declare Function InternetConnect Lib "WinInet.DLL" Alias "InternetConnectA" (ByVal hInternetSession As Long, ByVal lpszServerName As String, ByVal nServerPort As Long, ByVal lpszUserName As String, ByVal lpszPassword As String, ByVal dwService As Long, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function FtpGetFile Lib "WinInet.DLL" Alias "FtpGetFileA" (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwLocalFlagsAndAttributes As Long, ByVal dwInternetFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function FtpPutFile Lib "WinInet.DLL" Alias "FtpPutFileA" (ByVal hFtpSession As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Long
Public Declare Function InternetCloseHandle Lib "WinInet.DLL" (ByVal hInternetSession As Long) As Long
Public Declare Function InternetGetLastResponseInfo Lib "WinInet.DLL" Alias "InternetGetLastResponseInfoA" (lpdwError As Long, lpszBuffer As Byte, lpdwBufferLength As Long) As Long
|
|