« INDEX 関数の速さは、VLOOKUP 関数の約110倍 | トップページ | Excel2016(Office 365 サブスクリプション)にだけある IFS 関数 »

Excel でフォルダを作る。

この記事は自分用の覚書です。
(Windows 8.1 Pro 64ビット + Excel2013 Home & Business)

K.K さん。

Excel でフォルダを作るマクロです。

  1. フォルダ名の頭に 00 や 01 という番号をつけたい。
  2. 番号は連番とは限らない。
  3. 番号の横に任意のフォルダ名をつけたい。
  4. 多い場合は100個ほどのフォルダを作る場合もある。

ということでしたので、次の手順でお願いします。

番号から始まる文字列をワークシート上でつくってから、それをフォルダ名に使うという流れにしてみました。

■手順
1.任意のフォルダを作り、エクセルの新規作成したファイルを「名前を付けて保存」から「ファイルの種類」を「マクロ有効ブック」にしてそこへ保存。エクセルのファイル名は適当に。

2.保存したマクロ有効ブックを開く。

3.「開発」タブの「Visual Basic」をクリック
または、 Alt + F11 のショートカット。

4.Visual Basic Editor が起動してくるので「挿入」から「標準モジュール」を選択

5.下記のコードをコピー貼り付けして、いったん VBE は閉じる。

6.A2からセルを必要な数だけ選択し、セルの表示形式を「文字列」にする。
1行目は列見出しをつける想定。

7.00 や 01 から始まる番号を、A2 から入力。
コードのなかで、A列の最終行を取得しているので、A列は必ず入力を終えておく。

8.番号に続ける文字列を、B列に入力。

9.A列の番号とB列の文字列を、C列で結合する。(例 =A2&B2 )

10.今のシートを開いたままで、「開発」タブの「マクロ」をクリック

11.「フォルダの作成」が選択されていることを確認して「実行」をクリック。

12.エクセルのファイルを保存しているのと同じフォルダ内に、C列の値を使ったフォルダができる。
できたフォルダを切り取って、目的のフォルダ内に移動させる。

※付記
1.の時点で、既存のフォルダ内にファイルを保存しておけば、そのフォルダの直下に新しいフォルダを作ることができます。
ただ、パスの文字数が多すぎないかとか、フォルダ名には使えない文字を使っていないかといったチェックが、下記のコードではできていません。

いったんワークシート上でフォルダ名をつくってから、そのあたりのチェックをしておいた方が無難です。

いろいろ面倒ですみません。私の VBA のスキルの限界でして……。


Sub フォルダの作成()
    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        MkDir ThisWorkbook.Path & "\" & Cells(i, 3)
    Next i
'
'任意のフォルダを作り、このマクロを含むマクロ有効ブックをそこに保存しておく。
'
'開いているシートの2行目から値を入れていく。
'
'列見出しを使わずに1行目から値を入力する場合は、コードのなかの
' For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row の 2 を 1 にして、
' For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
'に変える。
'
'フォルダ名として使われるのは C 列に入っている文字列。
'マクロを実行すると、 C 列のセルにある文字列を名前としてフォルダが作られる。
'
End Sub

|

« INDEX 関数の速さは、VLOOKUP 関数の約110倍 | トップページ | Excel2016(Office 365 サブスクリプション)にだけある IFS 関数 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Excel でフォルダを作る。:

« INDEX 関数の速さは、VLOOKUP 関数の約110倍 | トップページ | Excel2016(Office 365 サブスクリプション)にだけある IFS 関数 »