Sub 送信()
'シートを追加
Worksheets.Add
With ActiveSheet.Next
Range("A1") = .Range("B4") '社員番号
Range("B1") = .Range("D4") '企画部
Range("C1") = .Range("F4") '名前
Range("D1") = .Range("F6") 'Q1
Range("E1") = .Range("F8") 'Q2
Range("F1") = .Range("A11") 'Q3
End With
ActiveSheet.Move '新規ブックに移動
Dim A, B
'フォルダパス
A = ThisWorkbook.Path & "\回答用フォルダ\"
'ブック名
B = A & Range("A1") & "_" & Format(Now(), "yyyymmdd-hhmmss") & ".xlsx"
ActiveWorkbook.SaveAs B '名前を付けて保存
ActiveWorkbook.Close False 'ブックを閉じる
MsgBox "アンケートを送信しました。ご回答ありがとうございます。"
End Sub
では、ポイント毎に実行して、手順をみてみます。
アンケートフォームを作成
アンケートフォームは、あらかじめ作成しておきます。
アンケートフォームを作成
入力規則のリストなども事前に設定しておきます。
入力規則のリストなどを設定しておく
入力規則のリストなども作成しておきます。
複数ある場合は、ほかのリストも作成しておきます。
とりあえず、アンケートフォームを作成できました。
実行する手順
では、VBAコードをポイント毎に実行して、実行する手順をみてみます。
先にアンケートを入力しておきます。
アンケートを入力しておく
VBAコードを実行してみます。
実行すると新規シートが作成されます。
新規シートが作成される
新規シートに、アンケート内容を転記します。
新規シートにアンケート内容を転記
新規シートを、新規ブックに移動します。
新規シートを、新規ブックに移動
新規ブックを名前を付けて保存します。
新規ブックを名前を付けて保存
新規ブックを名前を付けて保存します。
名前を付けて、回答用フォルダに保存できます。
名前を付けて、回答用フォルダに保存できました。
新規別ブックを閉じます。
新規ブックを閉じる
最後に、送信完了のメッセージが表示します。
送信完了のメッセージを表示
これで、アンケートの送信が完了します。
送信したブックの中身をみてみます。
アンケートの送信が完了
回答用フォルダに、アンケート結果を送信できます。
送信したアンケート内容です。
集計しやすいように、アンケートの結果のみを送信しています。
ボタンに登録
作成したVBAコードを、ボタンに登録しておくと、送信が簡単になります。
「送信」ボタンを作成して、VBAコードを登録します。
ボタンにVBAコードを登録
「送信」ボタンを作成して、VBAコードを登録しました。
これで、アンケートを送信する機能が完成です。
アンケートを集計する手順
次は、送信した複数ブックのアンケートを、集計する手順についてみていきます。
アンケートを集計するVBAコード
アンケートを集計する手順は、次のようになります。
①フォルダ内のブック名を1つ取得
②ブックを開く
③ブックの値を取得
④ブックを閉じる
⑤次のブック名を取得
②~⑤を繰り返して、すべてのブックから値を取得します。
VBAコードは、次のようになります。
Sub 集計()
Dim A
'フォルダ内の1つのブック名を取得
A = Dir(ThisWorkbook.Path & "\回答用フォルダ\*")
Do While A <> ""
'ブックを開く
Workbooks.Open ThisWorkbook.Path & "\回答用フォルダ\" & A
With ThisWorkbook.Sheets("集計")
'アンケート結果をコピー
Range("A1").CurrentRegion.Copy .Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
'ブックを閉じる
ActiveWorkbook.Close False
End With
A = Dir() '次のブック名を取得
Loop
End Sub