サイトアイコン HIBISEI Blog

Excel VBAで「B列ダブルクリック→隣のA列の書類番号フォルダを自動作成して開く」完全ガイド【超便利マクロ】

あなたはエクセルのリストから、リストの番号を使って、新しいフォルダを作成して開きたい!と思ったことはありませんか?

リストの番号のフォルダを作って、開いて、そこにフォルダを保存して・・・とか面倒ですよね。

リストの書類番号に紐づいたフォルダを自動で作って開いてくれたら、ファイルの保存が楽になるのに。

そんなときはエクセルVBAでフォルダの作成と開くのを自動化しておけば簡単です。

今回は「Excel VBAで「B列ダブルクリック→隣のA列の書類番号フォルダを自動作成して開く」完全ガイド【超便利マクロ】」を紹介します。

Excel VBAで「B列ダブルクリック→隣のA列の書類番号フォルダを自動作成して開く」完全ガイド

Excel VBAで「B列ダブルクリック→隣のA列の書類番号フォルダを自動作成して開く」方法です。

0.準備

最初にデスクトップに「データ」フォルダを作っておきます。

ファイル名は書類番号です。

データフォルダは空っぽでも大丈夫です。

このデータフォルダ内に新しいフォルダを作成します。

次にエクセルのリストを準備します。A列に「書類番号」、B列に「フォルダを開く」が入っています。

1.「alt」 + 「F11」 を押す →Sheet1(Sheet1)をダブルをクリック

2.右側にコード入力画面が開く →コードを入力

B列をダブルクリックしたら、A列の書類番号のフォルダを作って開く、という内容です。

3.B2セルをダブルクリック

コードが入力できたら、B2セルの「フォルダを開く」をダブルクリックします。

4.書類番号のフォルダが作成され、フォルダが開く

ここでは「AA00001」というフォルダが開きました。

一つ上の階層に戻ってみると、「データ」フォルダの中に、新しいフォルダ「AA00001」ができています。

他のセルもダブルクリックしてみる

他のセル(B3~B6)も順番にダブルクリックしてみると、ちゃんとフォルダができました!

FAQ

よくある質問と答えになります。

Q1:既に同じフォルダ名があったらどうなるの?

A1:既に同じフォルダ名があったら、新しいフォルダは作成されず、既にあるフォルダが開きます。

Q2:デスクトップ以外にフォルダを作りたい場合は?

A1:「basePath = Environ(“USERPROFILE”) & “\Desktop\データ”」のところを、

 別のパスに指定してください。

 例えば「ドキュメント」フォルダ内にデータフォルダを作るなら、

 「basePath = “C:\Users\*****\Documents\データ”」

 のようにしてください。

 (*****のところには、あなたのPCの適切なパスを入れて下さい)

まとめ

Excel VBAで「B列ダブルクリック→隣のA列の書類番号フォルダを自動作成して開く」方法です。

1.「alt」 + 「F11」 を押す →Sheet1(Sheet1)をダブルをクリック

2.右側にコード入力画面が開く →コードを入力

3.B列セルをダブルクリック

4.書類番号のフォルダが作成され、フォルダが開く

これでフォルダを作るのが楽になり、ファイルをいちいち開いたりしなくて良くなりました!

最後に今回使ったコードです。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    ' --- B列(2列目)、かつ2行目以降のみ対象 ---
    If Target.Column <> 2 Or Target.Row < 2 Then Exit Sub

    Dim docNum As String
    Dim basePath As String
    Dim folderPath As String

    ' --- 隣のA列(書類番号)を取得 ---
    docNum = Trim(Me.Cells(Target.Row, 1).Value)
    If docNum = "" Then Exit Sub

    ' --- デスクトップの「データ」フォルダ ---
    basePath = Environ("USERPROFILE") & "\Desktop\データ"

    ' --- 書類番号フォルダのフルパス ---
    folderPath = basePath & "\" & docNum

    ' --- 「データ」フォルダが無ければ作成 ---
    If Dir(basePath, vbDirectory) = "" Then
        MkDir basePath
    End If

    ' --- 書類番号フォルダを作成(既にあればスキップ) ---
    If Dir(folderPath, vbDirectory) = "" Then
        MkDir folderPath
    End If

    ' --- フォルダを開く ---
    Shell "explorer.exe " & """" & folderPath & """", vbNormalFocus

    ' --- セル編集モードに入るのを無効化 ---
    Cancel = True

End Sub
モバイルバージョンを終了