#408 | FTPでファイルをダウンロードする方法 | VBA、API | |
WinInet.DLLのAPI関数を使うと、FTPサーバーに接続してファイルをダウンロードすることができます。 それにはまず、標準モジュールに次のようなAPIの宣言を記述します。 Private Declare Function InternetOpenS _ 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 Private Declare Function InternetConnectS Lib _ "WinInet.DLL" Alias "InternetConnectA" _ (ByVal hInternetSession As Long, ByVal lpszServerName As String, _ ByVal nServerPort As Integer, 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 FtpSetCurrentDirectoryS _ Lib "WinInet.DLL" Alias "FtpSetCurrentDirectoryA" _ (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Long Public Declare Function FtpGetFileS _ Lib "WinInet.DLL" Alias "FtpGetFileA" _ (ByVal hFtpSession As Long, ByVal lpszRemoteFile As String, _ ByVal lpszNewFile As String, ByVal fFailIfExists As Long, _ ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, _ ByVal dwContext As Long) As Long Private Declare Function InternetCloseHandle _ Lib "WinInet.DLL" _ (ByVal hInet As Long) As Long Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0 Private Const INTERNET_DEFAULT_FTP_PORT = 21 Private Const INTERNET_SERVICE_FTP = 1& Private Const FTP_TRANSFER_TYPE_ASCII = &H1 Private Const FTP_TRANSFER_TYPE_BINARY = &H2 Private Const FILE_ATTRIBUTE_NORMAL = &H80 次のサンプルプロシージャでは、FTPサーバー上の「homepage/images/」ディレクトリにある「image.gif」ファイルを、ローカルの「c:\image.gif」としてダウンロードしています。 なお、FTPサーバー名やアカウント名は適宜書き換えて実行してください。 Sub FTP_Download() 'FTPダウンロードの例 Const cstrServer As String = "******.com" 'FTPサーバー名 Const cstrUserName As String = "******" 'アカウント名 Const cstrPassword As String = "******" 'パスワード Dim strDir As String Dim strFrom As String Dim strTo As String Dim lngInet As Long Dim lngFTP As Long Dim lngRet As Long 'ダウンロード元ディレクトリを設定 strDir = "homepage/images/" 'ダウンロード元ファイル名を設定 strFrom = "image.gif" 'ダウンロード先ファイル名を設定 strTo = "c:\image.gif" 'FTPをオープン lngInet = InternetOpenS(vbNullString, INTERNET_OPEN_TYPE_PRECONFIG, _ vbNullString, vbNullString, 0&) If lngInet <> 0 Then '成功したらFTPサーバーに接続 lngFTP = InternetConnectS(lngInet, cstrServer, _ INTERNET_DEFAULT_FTP_PORT, _ cstrUserName, cstrPassword, _ INTERNET_SERVICE_FTP, 0&, 0&) If lngFTP <> 0 Then '成功したとき 'ダウンロード先ファイルがあったら削除 If Len(Dir(strTo)) > 0 Then Kill strTo End If 'ダウンロード元ディレクトリへ移動 FtpSetCurrentDirectoryS lngFTP, strDir 'ファイルをバイナリモードでダウンロード '(ASCIIモードの場合はTRANSFER_TYPE_ASCIIを指定) lngRet = FtpGetFileS(lngFTP, strFrom, strTo, _ 1&, FILE_ATTRIBUTE_NORMAL, _ FTP_TRANSFER_TYPE_BINARY, 0&) If lngRet <> 0 Then '成功したとき MsgBox "ファイルのダウンロードに成功しました!", vbOKOnly + vbInformation End If End If 'FTPをクローズ InternetCloseHandle lngInet End If End Sub |
|||
|
Copyright © T'sWare All rights reserved |