ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBA MkDir|今月のフォルダを作成する

フォルダを作成するMkDirステートメントの使い方を解説します。サンプルコードでは、毎月月初に当月のフォルダを作成するコードを取り上げます。

目次

今月のフォルダを作成する

いきなり文法の結論

ずばり、こう書きます。

MkDir パス

Cドライブ直下に「サンプルフォルダ」というフォルダを作るサンプルコードは下記の通りです。

Sub C直下にフォルダを作る()

    MkDir "C:\サンプルフォルダ"
    
End Sub

MkDir の後に作成したいフォルダのフルパスを書きます「\」は「¥」という理解でOKです。環境によって見え方が違うだけでバックスラッシュと円マークは同じ意味です。

エラーになるケースを補足説明

文法*1はシンプルで簡単です。エラーになる場合について抑えておきましょう。エラーになるパターンは2つだけです。

  • すでに存在しているフォルダのパスを指定する
  • 親フォルダが存在していない

1点目については先ほどのサンプルコードをもう一度実行してみれば確認できます。一度目はエラーになりませんが、二度目はエラーになります。すでにCドライブに「サンプルフォルダ」というフォルダが存在するからです。

パス名は無効ですのエラーが表示された
同じフォルダを二度作ろうとするとエラーになる

2点目については、上のサンプルコードで作成したサンプルフォルダの中に、「今月のフォルダ」を作成することを考えます。

Sub サンプルフォルダの中に今月のフォルダを作る()

    MkDir "C:\サンプルフォルダ\今月のフォルダ"
    
End Sub

実行してみると確かに「サンプルフォルダ」の中に「今月のフォルダ」が作成されていました。

無事に「サンプルフォルダ」の中に「今月のフォルダ」が作成された
実行結果

今回うまくいったのは、すでにサンプルフォルダを作成済みだったからです。サンプルフォルダを一度消して、このプロシジャを実行してください。すると、今度は別のエラーが出ます。

存在しない親フォルダの中にフォルダを作成することはできない
「パス名が無効です」のエラーが出た。

今回は「パス名が無効です」というエラーが出ました。存在しない「サンプルフォルダ」の中に「今月のフォルダ」を作成する命令を記述したため、「そんな親フォルダありません」というエラーになった、というわけです。これらを言い換えると、一番最後のパスのところだけ、まだ存在しないフォルダ名にして、親の部分はすべて既存のフォルダである必要がある、ということです。

今回やりたいことのイメージ

先ほど作成したサンプルフォルダに6桁の数字でYYYYMMという名前のフォルダを作成することが今回やりたいことです。

今回やりたいイメージは6桁の数字でフォルダ名をつけることだ
再掲:「今月のフォルダ」という名前ではなく201912のような名前を付けたい

月ごとに何かのデータをYYYYMMというフォルダに日々ためていく業務を想像してください。月初に一回だけ、今月のフォルダを作りたい。という感じです。

サンプルコード

Sub 当月のYYYYMMフォルダを作る()
    
    Dim 当月num As Long
    
    当月num = Year(Date) & Format(Date, "MM")
    MkDir "C:\サンプルフォルダ\" & 当月num
    
End Sub

無事に当月のフォルダを生成できた
実行結果

まとめ ~MkDirをつかって今月のフォルダを作成する方法~

  • 文法は単純で、MkDir パス名
  • エラーになる2つのパターンだけ覚えよう

<関連記事>

*1:プログラムの文法の事をシンタックスと言います