見出し画像

【ファイル付き】コピペで使えるExcelマクロ!ランダム文字列生成マクロ

Excelを使って複数のランダムな文字列(英数字)を一括で作れたら便利ですよね。たとえば、テストデータとしてユニークなIDを大量に作りたいときなどに役立ちます。今回は初心者の方でもわかりやすいよう、Excel VBAでランダム文字列を自動生成するマクロのコードを紹介します。

Excelマクロの基本的な使い方は、下の記事を参考にしてください



1. マクロの概要

このマクロは、二つのInputBox(入力ボックス)を使って

  1. 生成したい文字列の「桁数」

  2. 生成したい「個数」

を入力し、指定した数だけランダム文字列を作ってA列に出力するものです。
文字列には 大文字・小文字のアルファベットと数字 をランダムに組み合わせています。
データのテスト用や確認用にたくさんのユニークなコードを生成したいときに非常に便利です。

2. コードの説明

以下が今回紹介するVBAコードです。ExcelのVBAエディタに貼り付けて使います。

Sub ShowInputForm()
    Dim strDigitInput As String ' 桁数入力用
    Dim strCountInput As String ' 生成数入力用
    Dim lngDigitLength As Long  ' 桁数
    Dim lngNumberCount As Long  ' 生成する乱数の個数
    Dim lngRowIndex As Long     ' 行番号用
    
    ' 桁数を入力
    strDigitInput = InputBox("桁数を入力してください (正の整数を入力してください):", "桁数入力")
    If Not IsNumeric(strDigitInput) Or Len(strDigitInput) = 0 Or Val(strDigitInput) <= 0 Then
        MsgBox "無効な桁数が入力されました。処理を終了します。", vbExclamation
        Exit Sub
    End If
    lngDigitLength = CLng(strDigitInput)
    
    ' 生成数を入力
    strCountInput = InputBox("生成したい乱数の個数を入力してください (正の整数を入力してください):", "生成数入力")
    If Not IsNumeric(strCountInput) Or Len(strCountInput) = 0 Or Val(strCountInput) <= 0 Then
        MsgBox "無効な生成数が入力されました。処理を終了します。", vbExclamation
        Exit Sub
    End If
    lngNumberCount = CLng(strCountInput)
    
    ' 乱数を生成してA列に出力
    Application.ScreenUpdating = False
    For lngRowIndex = 1 To lngNumberCount
        Cells(lngRowIndex, 1).Value = GenerateRandomString(lngDigitLength)
    Next lngRowIndex
    Application.ScreenUpdating = True
    
    MsgBox "乱数の生成が完了しました。", vbInformation
End Sub

Function GenerateRandomString(ByVal lngDigitLength As Long) As String
    Dim strRandomString As String ' ランダム文字列
    Dim strCharacters As String   ' 使用する文字セット
    Dim lngCharIndex As Long      ' 選択された文字のインデックス
    Dim i As Long                 ' ループカウンタ
    
    ' 使用する文字のセット
    strCharacters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
    strRandomString = ""
    
    For i = 1 To lngDigitLength
        ' 1からCharactersの長さまでのランダムなインデックスを取得
        lngCharIndex = Int((Len(strCharacters) - 1 + 1) * Rnd + 1)
        strRandomString = strRandomString & Mid(strCharacters, lngCharIndex, 1)
    Next i
    
    GenerateRandomString = strRandomString
End Function

3. 使い方

  • Excelファイルを用意 し、VBAエディタを開きます。

    • 「開発」タブ → 「Visual Basic」をクリックし、VBAエディタを立ち上げます。

  • 標準モジュールを追加 します。

    • 「挿入」→「標準モジュール」を選択。

  • 上記コードを貼り付け ます。

  • マクロを実行してみましょう。

    • VBE画面上から F5 キーで ShowInputForm を実行するか、Excelに戻ってマクロを選択して実行します。

  • 表示される 二つのInputBox で「桁数」と「生成する数」を入力します。

  • A列を確認すると、指定した数だけランダム文字列が生成されます。

4. ファイルの配布

実際のファイルも置いておきます。これをダウンロードして使用することも可能です。

5. まとめ

Excel VBAを使えば、短いコードで大量のランダム文字列を一瞬で作成できます。
この記事で紹介したマクロをさらにカスタマイズしたい場合や、エラーが発生する場合は、お気軽にコメントをお寄せください!

※本記事で紹介しているマクロやファイルの使用に伴い発生したいかなるトラブルや損害についても、当方では一切の責任を負いかねます。すべて自己責任のもとでご利用ください。

いいなと思ったら応援しよう!