インターネットからファイルをダウンロードする方法

◆概要
 この資料は、Microsoft Accessで、インターネットからファイルをダウンロードする方法について記載しています。


ファイルをインターネットからダウンロードする方法としては、インターネット トランスファ コントロールを利用する方法とWindows APIを利用する方法があります。


◆インターネット トランスファ コントロールを利用する方法

ツールボックスの「コントロールの選択」ボタンをクリックし、表示されたメニューからMicrosoft Internet Transfer Controlを選択しし、フォームに貼り付けます。 次の例は郵便会社のホームページから最新の郵便番号データ(福岡県版)を取得します。

Private Function FileDownload()
    On Error GoTo Download_Error
    
    Dim strURL      As String   ' 取得URL
    Dim strFileName As String   ' ファイル名
    Dim intFileNo   As Integer
    Dim bytHtml()   As Byte
    Dim Cur_Folder As String
    
    DoCmd.Hourglass True
    Application.Echo False, "最新郵便番号をダウンロード中..."

    ' downlodするファイル名
    strURL = 
   "http://www.post.japanpost.jp/zipcode/dl/oogaki/lzh/40fukuok.lzh"
     ' ファイルを保存するフォルダ名
    Cur_Folder ="C:\temp\"
    ' 福岡県版郵便番号を取得する
    strFileName = Cur_Folder & "\40fukuok.lzh"    'SAVE ファイル名
    intFileNo = FreeFile        'ファイルNoを取得
    DoCmd.Hourglass True
    DoEvents
    'ファイルをバイナリモードで読み込み
    bytHtml() = Inet1.OpenURL(strURL, icByteArray)

    '保存処理
    Open strFileName For Binary Access Write As #intFileNo
        Put #intFileNo, , bytHtml()
    Close #intFileNo
    DoCmd.Hourglass False
    Application.Echo True
    DoCmd.Hourglass False
    Exit Function
    
Download_Error:
    MSGBOX (Err.Number & ":" & Err.Description), _ 
      vbOKOnly + vbCritical, "接続エラー"

◆Windows APIを利用する方法

Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long


Private Function FileDownload2()
    Dim SaveFileName As String
    Dim DownloadFile As String
    Dim Ret          As Long
    Dim Cur_Folder As String
    
    ' データベースのあるフォルダ名の取得
    Cur_Folder = PickFolder(CurrentDb.Name)
        SaveFileName = Cur_Folder & "\40fukuok.lzh"   'SAVE ファイル名

    DownloadFile = 
    "http://www.post.japanpost.jp/zipcode/dl/oogaki/lzh/40fukuok.lzh"

    Ret = URLDownloadToFile(0, DownloadFile, SaveFileName, 0, 0)
    DoEvents

End Function

 Note インターネット トランスファ コントロールを利用するよりも、Windows APIを利用した方が高速にダウンロードすることができます。

▼ページトップに戻る