EXCEL、VBAでフォルダ作成アプリケーションを作る

Excelのデータをフォルダにしたいとき、ありませんか?

ないよ、そんなとき

!?

私の業務では、入力したデータをフォルダとして作成するときが結構あります。

そんな時、VBAで出力すると楽なので、結構利用しています。

 

そんなタイミングがあったら使ってみてね

目次

1.アプリケーション作成のための準備

・Excelに開発タブを表示する。(表示されていない場合)

シートの「ファイル」=>「オプション」=>「Excelのオプション」から「開発」にチェックを入れます。

※↓図は、Excel2013の場合です。2016の場合も同様の操作で可能です。

・こんなものを作ります

①にフォルダ名にしたいデータを記入します。

②に、データの出力先を入力します。

③で処理を実行します。

2.アプリケーションの作成

xlsm形式で保存

VBAマクロが含まれるExcelファイルは、「xlsm」という形式で保存します。名前を付けて保存で、xlsm形式で保存しておきます。

フォルダを出力する場所

フォルダを作成したい場所に、「出力」という名前のフォルダを作成します。

今回は、デスクトップに作成しました。

開いて、ウィンドウ上部のフォルダ名が表示されている部分をクリックすると、フォルダのパス(コンピューターのどこに保存されているかを示すもの)が表示されますので、これをコピーして、Excelのシートに貼り付けます。

ボタンを作成

「開発」タブから、「挿入」を選択、「コマンドボタン」を選択します。

カーソルが十字になりますので、シート上でクリックしてドラッグすることでボタンが作成できます。

この時点で、ボタンが何をするのか、という処理は記載していないので、クリックしても何も起こらないボタンを作成することができました。

ボタンで何をするのか

いよいよ、ボタンを押したときに何をするのか、という中身を作成していきます。

まず、デザインモードというモードに変更します。

上の図のようにデザインモードがオンになると背景が緑色になります。

デザインモードにする以前は、ボタンを押すとクリックしたようにボタンが押されたましたが、デザインモードにすることで、ボタンを移動させたり、ボタンの名前を変更したりできるようになります。

次に、ボタンの名前を決めます。

ボタンを右クリックして、「プロパティ」を開き、内容を変更します。

「(オブジェクト名)」というところとに、「出力ボタン処理」、「Caption」というところに「出力」と入力しました。

「Caption」を入れ終わったときに、ボタンに表示されているテキストが「出力」と変わるのがわかります。「(オブジェクト名)」のところは、後で行う、プログラムの入力時にわかります。プロパティ画面は右上の×で閉じてください。

プログラムの入力

ボタンがどんなことをするのか、はプログラムで記載します。

デザインモードで、ボタンをダブルクリックすることで、プログラム入力するウィンドウが表示されます。

上の図の右のウィンドウの「Private Sub…」という部分と「End Sub」の間の行にプログラムを入力します。

先ほどボタンのプロパティで入力した(オブジェクト名)は、ボタンの処理の名前になるのです。「出力ボタン処理」と処理名を記載することで、後から何をする処理なのかがわかりやすく名前でわかります。

「Private Sub 出力ボタン処理_Click()」と「End Sub」の間の行に次のプログラムを入力してください。

Private Sub 出力ボタン処理_Click()
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    Dim Path As String
    
    Path = Cells(3, 5).Value 'Pathに「出力フォルダのパスを入力」

    Dim i As Long
    
    If False = FSO.FolderExists(Path) Then 'フォルダ存在しない場合。
        MsgBox "出力フォルダが存在しません"
    Else '出力フォルダが存在する場合
        For i = 2 To 100 '2列目から100列目までを繰り返し処理
            If Cells(i, 2) = "" Then
                'データが入力されていない場合何もしない。
            Else
                MkDir Path + "\" + Cells(i, 2).Value
            End If
        Next
        MsgBox "出力が完了"
    End If
End Sub

この例では、プログラムの14行目の「For i = 2 To 100」と、100列目までを見て入力があったら、という条件にしていますので、Excelシートの100列目以降のデータはフォルダとなりません。

もっと多くの列にしたい場合は、この100を変更します。

3.アプリケーションの検証

実行してみます。まずは、先ほどの「デザインモード」を解除します。

これでボタンが押せるようになりますので、押します。

このように、「Desktopの出力というフォルダ」にデータ名のフォルダを出力できるようになりました。

4.VBAフォルダ作成アプリケーションのまとめ

今回は、汎用的な機能となりましたが、手入力で面倒な処理をVBAなどで自動化していくことはかなり有効で、仕事の速度を上げてくれます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次