ExcelVBAではじめるバイナリーオプション自動取引

5. バックテストについて

c.zipファイルの解凍


zipファイルを解凍するプログラム

 ダウンロードしたファイルはzip形式になっており、解凍する必要があります。

 せっかくなので手動ではなく、自動で(VBAで作成したプログラムを使って)解凍してみることにします。

 ここでも解凍後の容量には注意してください。

 以下はダウンロードしたファイルを新規フォルダ(エクセルがあるフォルダ内にunzippedを作成)に解凍(展開)するサンプルコードです。

Sub UnZip() 'フォルダ内のZIPファイルを解凍する '/*変数リスト Dim sh As Object 'シェルオブジェクト Dim zip_folder As Variant 'zipフォルダ Dim unzipped_folder As Variant '展開するフォルダ Dim filelist(20 * 365) As Variant '解凍するファイルリスト(最大20年×365日) Dim filename As Variant 'ファイル名 Dim i As Long 'カウンタ用変数 '*/ zip_folder = ThisWorkbook.Path + "\zipped\" 'zipフォルダをセット unzipped_folder = ThisWorkbook.Path + "\unzipped" '展開するフォルダをセット If Dir(unzipped_folder, vbDirectory) = "" Then MkDir unzipped_folder '展開フォルダがなければ新規作成 End If unzipped_folder = unzipped_folder + "\" '"※\マークのHTMLエスケープ用。特に意味なし。 'zipフォルダ内のファイルを取得 i = 0 'カウンタクリア filename = Dir(zip_folder + "*.zip") 'ファイル名(1件目)を取得 Do While filename <> "" filelist(i) = zip_folder + filename 'パス+ファイル名をリストに保存 filename = Dir() 'ファイル名(2件目以降)を取得 i = i + 1 Loop Set sh = CreateObject("Shell.Application") 'シェルをセット For Each filename In filelist If filename = "" Then Exit For End If sh.Namespace(unzipped_folder).copyhere sh.Namespace(filename).items 'ファイルを解凍 Next End Sub

 ※解凍にはだいぶ時間がかかると思いますのでご注意ください。ちなみに展開後のサイズは2012年分だけで317MBあります。

 実際のところ、VBAでやる必要のない作業ではあるかもしれませんが、VBAでこんなこともできるということを知っていれば、いつか役に立つときが来るかもしれません。