こんにちは。SI部の高橋です。

前回の「単純作業は自動化しよう(VBA編(2))」で、アドインを使って、メニュー表示とそのメニューからVBAの実行の説明をしました。

今回は以下のようなフォームを作成します。
この各項目に値を入力して実行ボタンを押下することで、VBA編(1)、(2)でご紹介したテンプレートからのファイル作成を実行させます。

最終

フォームを作成する手順

作成したフォームをメニューから出力させるまでの手順を説明します。

Visual Basicを開く

作成したアドインを開く

2-1

開発⇒Visual Basicを選択し、Visual Basicを開きます。

※開発タブがないときは「単純作業は自動化しよう(VBA編(1))」を参考に、

開発タブを表示させてください。

2-2

ユーザフォームを追加

メニュ⇒挿入より、ユーザフォームを追加を選択する
ユーザフォーム追加
以下のようにフォームが追加されます
ユーザフォーム追加_2

部品を追加

フォームに部品を追加していきます。
コントロールとフォームの各部品を番号で紐づけましたので、その通りに追加してください。
コントロールを選択し、フォーム上で張り付けることができます。
コントロールボタン_2
最終_採番

各部品の設定

1.FORM
フォーム名を変更する。
フォームを選択し、プロパティでCaptionの値を変えて名前を変更します。
FORM名変更

2.オブジェクト名の修正
部品を選択すると、プロパティでオブジェクト名が修正できるので修正します。
VBA内で各部品を指定する際にデフォルトだと識別しづらいため修正をお勧めします。
オブジェクト名
今回の各部品のオブジェクト名は以下になります。
各オブジェクト名

3.処理追加
各ボタンで行う処理を追加します。
処理を追加したいボタンをWクリックすることで、処理が空のSubプロシージャが作成されます。
各ボタン

3-1.雛形ファイル情報の参照ボタン
ファイル選択(.xls)を行う

Private Sub HinagataSanshouButton_Click()
HinagataPathTextBox.Value = Application.GetOpenFilename("EXCEL Files (*.xls), *.xls", 1, "ファイル選択", "選択", False)
End Sub

3-2.作成ファイル情報の参照ボタン
作成先出力フォルダの選択を行う

Private Sub SakuseiSanshouButton_Click()
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
SakuseiPathTextBox.Value = .SelectedItems(1)
End With
End Sub

3-3.実行ボタン
各部品のオブジェクト名に修正した処理

Private Sub JikouButton_Click()

    'ファイル数カウント
    Dim fileCount As Integer
    '作成ファイル名
    Dim makeFile As String

    fileCount = 1

    '作成ファイル数分、雛形をコピーする
    Do While fileCount <= SakuseiSuuTextBox.Value

        '作成ファイル名
        makeFile = SakuseiPathTextBox.Value & "\" & SakuseiFileMeiTextBox.Value & fileCount & ".xls"

        '雛形をコピーして、新しいファイルを作成
        FileCopy HinagataPathTextBox.Value & "\" & HinagataTextBox.Value, makeFile

        '新しく作成したファイルを開く
        Workbooks.Open Filename:=makeFile, ReadOnly:=False

        '新しく作成したファイルのシート名をエクセル名にする(拡張子なしファイル名)
        ActiveWorkbook.Worksheets(1).Name = Mid(SakuseiSheetMeiTextBox & fileCount, 1, 30)

        '保存して閉じる
        ActiveWorkbook.Close savechanges:=True

        'ファイル数カウントを増やす
        fileCount = fileCount + 1
    Loop
End Sub

実行例

これでフォームからVBAを実行する準備が整いましたので実際に動かしてみましょう。
1.自動化メニューから「雛形コピーと名前変更FORM」を選択
実行1
2.各フォームに値を入力し、実行ボタンを押下
実行2
3.ファイルが作成される
作成3
作成4

最後に

VBA編(1)〜(3)を通して、フォームコントロールを利用してのアドイン作成ができるようになりました。

このようにフォームを利用したアドインにすることで、一時的にだけではなく、継続した作業の効率化に一役買ってもらえるのではないでしょうか。