見出し画像

選択範囲のセルの文字列からフォルダを一括作成!

ご無沙汰してます。カツオです。いやーブログもなかなか続かないですね。
本日は簡単なスクリプトのご紹介。会社のPCにもコピーしてアドインとして使おうと思っています!

エクセルファイルで選択している範囲のセルの表示文字列をフォルダ名として、フォルダを一括で作成するスクリプトです!

選択した範囲のセルの表示テキストの名前のフォルダを一括作成する

'========================================
'mainプロシージャ
'========================================
Private Sub MakeFoldersofDirectory()
   Dim strDirectory As String
   Dim r As Range
   With Application.FileDialog(msoFileDialogFolderPicker)
       If .Show = True Then
           strDirectory = .SelectedItems(1)
       End If
   End With
   If strDirectory = "" Then Exit Sub
   Select Case IsArray(Selection)
       Case False
           If Selection = "" Then Exit Sub
           Call MakeFolder(strDirectory & "\" & Selection.Text)
       Case True
           For Each r In Selection
               If r.Text = "" Then Exit For
               Call MakeFolder(strDirectory & "\" & r.Text)
           Next r
   End Select
   MsgBox "作業が完了しました。", vbInformation, "info"
End Sub
'========================================
'実際にフォルダを作るプロシージャ
'========================================
Private Sub MakeFolder(ByVal FolderPath As String)
   If Dir(FolderPath) <> "" Then Exit Sub
   On Error Resume Next '無理な表現は全部resume nextではじく
   MkDir FolderPath
End Sub

見ての通り簡単なスクリプトです。フォルダ名として使えない文字列とかはResume Nextで無視しましょうというガバガバっぷり。正規表現とか勉強すればもっと可能性があるのかしら。

こんな感じのマクロですが個人的にはアドインとして利用することをお勧めします!

アドインの作り方を解説するのは正直メンドウ(爆)といいますか良記事が沢山あるのでそちらをご参照ください(神髄先生のリンクはります)

今回のポイントは選択している範囲の表示文字列をもとにフォルダを作ることです。

え?なんのこと?っていう方もいますが例えば日付で「2021年2月」と表示されている部分も値としては「2021/02/01」となっています。表示されている文字列からそのまま作りたいなーと思ったのでこういう仕様にしました。

そして今回は今度自分のアドイン用に作ろうと思っていたユーザ定義関数も載せます。

自作関数 TEXTA関数

画像1

日付がメインですがいちいち文字列に直さなきゃいけない場面って私の仕事ではよくあります。TEXT関数でやれよってとこなのですが、表示形式の設定がぶっちゃけ面倒です。

表示形式をはしょる目的でTEXTA関数というものを作ってみました。見えている形式で文字列を返そうという目的のユーザ定義関数です!

'========================================
'表示されている値を文字列として返す
'========================================
Function TEXTA(ByVal 参照セル As Range) As String
   If 参照セル.Text = "" Then Exit Function
   TEXTA = 参照セル.Text
End Function

参照セル As Rangeと書いているのはユーザ定義関数として使いやすくするためです。

変数名を日本語でつけるのはどうなのか?いやそこにメリットが!みたいな談義が「しゃあ@やっぱりVBAが好き」さんのこの会で実施されているようですが、チキンなのとタイミングが合わなくていけない・・・。でもいつかお邪魔したいな・・・。紹介用のnote貼ります。今日は以上です!

今回は自分のアドイン用です!業務効率化に役立ててください!

この記事が気に入ったらサポートをしてみませんか?