【ExcelVBA】フォルダを作成する

この記事では、フォルダを作成する方法についてご説明します。

【動画】フォルダを作成する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


フォルダを作成する方法は3つありますが、その3つそれぞれの方法を使ってフォルダを作成しています。

フォルダを作成するには次の3通りの方法があります

先ほどの動画の中でも紹介しましたが、フォルダを作成するには次の3通りの方法があります。

  1. MkDirステートメントを使ってフォルダを作成
  2. fso.CreateFolderメソッドを使ってフォルダを作成
  3. API関数SHCreateDirectoryExを使ってフォルダを作成

①MkDirステートメントを使ってフォルダを作成

フォルダを作成する1つ目の方法は、MkDirステートメントを使ってフォルダを作成する方法です。

Option Explicit

sub test()

    'フォルダを作成する
    MkDir "C:\work\temp\test"

end sub

6行目でMkDirステートメントを使ってフォルダを作成しようとしています。

なお上記コードでは、C:\work\tempの配下にtestというフォルダを作成しようとしています。

C:\work\tempの配下にtestというフォルダを作成するには、MkDirステートメントの引数に「C:\work\temp\test」と指定します。

②fso.CreateFolderメソッドを使ってフォルダを作成

フォルダを作成する2つ目の方法は、fso.CreateFolderメソッドを使ってフォルダを作成する方法です。

Option Explicit

sub test()

    Dim fso             As Object   'FileSystemObjectのインスタンス用変数
    
    'FileSystemObjectのインスタンスを生成する
    Set fso = New FileSystemObject

    'fso.CreateFolderメソッドを使ってフォルダを作成する
    fso.CreateFolder "C:\work\temp\test"

    '後処理
    Set fso = Nothing

end sub

11行目でfso.CreateFolderメソッドを使ってフォルダを作成しようとしています。

なお上記コードでは、C:\work\tempの配下にtestというフォルダを作成しようとしています。

C:\work\tempの配下にtestというフォルダを作成するには、fso.CreateFolderメソッドの引数に「C:\work\temp\test」と指定します。

③API関数SHCreateDirectoryExを使ってフォルダを作成

フォルダを作成する3つ目の方法は、API関数SHCreateDirectoryExを使ってフォルダを作成する方法です。

Option Explicit

'階層化されたフォルダを一気に作成するAPI関数
Private Declare PtrSafe Function SHCreateDirectoryEx Lib "shell32" Alias _
                                "SHCreateDirectoryExA" ( _
                                ByVal hwnd As Long, _
                                ByVal pszPath As String, _
                                ByVal psa As Long) As Long

Sub test()

    Call SHCreateDirectoryEx(0&, "C:\work\temp\test", 0&)

End Sub

12行目でAPI関数SHCreateDirectoryExを使ってフォルダを作成しようとしています。

なお上記コードでは、C:\work\tempの配下にtestというフォルダを作成しようとしています。

C:\work\tempの配下にtestというフォルダを作成するには、SHCreateDirectoryExの第2引数に「C:\work\temp\test」と指定します。

また、API関数SHCreateDirectoryExを使うには、4行目から8行目の通りにAPI関数SHCreateDirectoryExの宣言文を記述しないといけません。

宣言文を記述しないでAPI関数SHCreateDirectoryExを実行しようとしてもエラーとなってしまい使うことができないので、宣言文の記述を忘れないようにしましょう。

動作確認

マクロ実行前

マクロを実行する前のフォルダ。「C:\work\temp」のフォルダ内に、新たなフォルダ「test」を作成します。

マクロ実行後

マクロを実行した結果、「C:\work\temp」のフォルダ内に、新たなフォルダ「test」を作成されました。

【注意】参照設定が必要です

一つ注意点があるのですが、先ほどの「fso.CreateFolderメソッドを使ってフォルダを作成」する方法の説明で紹介したコードを動かすには参照設定が必要です。

参照設定の一覧(下の画像を参考)から次の項目(ライブラリ)にチェックを付けて「OK」ボタンをクリックします。

  1. Windows Script Host Object Model(wshom.ocx)

なぜ必要かというと、Excelのマクロのコードの5行目の「FileSystemObject」というオブジェクトが「wshom.ocx」というファイルを参照するからです。

Dim fso             As Object   'FileSystemObjectのインスタンス用変数

この参照設定をしないと下の画像のエラーが出ますので必ず行う必要があります。

ここでは「wshom.ocx」とは何者かについては記事の本題から逸れてしまうので詳細は割愛しますが、マクロで「wshom.ocx」というオブジェクトを使う場合は参照設定しないと動かない、程度に思って頂ければと思います。

最後に

本記事では、フォルダを作成する方法についてご説明しました。

フォルダを作成するには次の3つの方法があります。

  1. MkDirステートメントを使ってフォルダを作成
  2. fso.CreateFolderメソッドを使ってフォルダを作成
  3. API関数SHCreateDirectoryExを使ってフォルダを作成

フォルダを作成する場合は参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら