新しいフォルダを作成「folderCreate」の解説
今回は、新しいフォルダを作成するサブルーチンを解説していきます。
VBAのIE操作では画像やファイルを自動ダウンロードすることが多々あります。
特定のフォルダを事前に作成しておいて、そのフォルダに格納する制御方法については、「ファイルダウンロード「fileDL」の解説」で解説していますが、今回は、保存先であるフォルダを自由に設定する方法について紹介します。
これはカテゴリ毎に画像を保存したいなどファイルを分ける作業が発生する場合に非常に便利な制御方法です。
ここでは、その基本となる新しいフォルダの作成方法について見ていきましょう。
新しいフォルダを作成するサブルーチン
Sub folderCreate(newFolderPath As String)
'FileSystemObjectインスタンスを生成
Set objSFO = CreateObject("Scripting.FileSystemObject")
'フォルダの存在確認
If Not objSFO.FolderExists(newFolderPath) Then: objSFO.CreateFolder newFolderPath
'オブジェクトの解放
Set objSFO = Nothing
End Sub
フォルダ作成→ファイルデータダウンロードのマクロ
Sub sample()
Dim objIE As InternetExplorer
Dim newFolderName As String
'ライブラリ追加ページを表示
Call ieView(objIE, "http://www.vba-ie.net/library/index.html")
newFolderName = "image"
Call folderCreate(ThisWorkbook.Path & "\" & newFolderName)
'画像データをダウンロードして保存
Call fileDL(objIE, "vbaproject", newFolderName)
End Sub
実行結果
こちらの引数は以下の1つです。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
newFolderPath | String | フォルダを作成するパス文字列 | "C:\Users\vba-ie\Desktop\vba-ie\test" | × |
「newFolderPath」は必須項目となります。
「newFolderPath」にフォルダを作成するパスを入力します。
今回の例で言えば、ファイルと同じディレクトリに「image」フォルダを作成しています。
Set objSFO = CreateObject("Scripting.FileSystemObject")
フォルダを操作にするには、「FileSystemObjectオブジェクト」を利用します。
こちらではインスタンスを作成しています。
If Not objSFO.FolderExists(newFolderPath) Then: objSFO.CreateFolder newFolderPath
こちらでは、{IF~Thenステートメント」を利用してフォルダが存在するかチェックし、存在しない場合はフォルダ作成処理を加えています。
フォルダの存在有無については、「FolderExistsメソッド」を利用します。
「FolderExistsメソッド」は、フォルダがあるかどうかを調べるメソッドで、フォルダのコピー・移動・削除などを行う前に、対象のフォルダがあるかどうかを調べる時に便利なメソッドです。
次にフォルダを作成するのに「CreateFolderメソッド」を利用して作成しています。
「CreateFolderメソッド」では、作成するフォルダ名をWindowsの命名規則に従って指定しなくてはいけません。
Set objSFO = Nothing
最後にオブジェクトを開放して終了となります。
「ParentDirNameサブルーチン」を利用して1階上にフォルダを作成することもできますので、その都度調整しましょう。
次の記事: VBAでIE操作に役立つ指定フォルダ内のファイル一覧(ファイル名)を取得 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。