[Microsoft Forms]クイックインポートを利用してエクセルからクイズを作成する (非推奨)

やりたいこと

Micorosoft Forms上でクイズを作成したいが、手動で1問ずつ手入力するのは大変面倒なのでなるべく自動化したい。

 

クイックインポートとは

Word またはPDFファイルをインポートしてフォーム・クイズを自動生成できる機能。

Wordまたは PDF フォームまたはクイズをMicrosoft Formsに変換する – Microsoft サポート

ただし、一括で作成となると、やはりエクセルから取り込みたいものである。エクセルはインポート対象外であるため、エクセルからpdfへ変換して取り込むことにする。

 

エクセルからpdfへの変換

適当なマクロを用意して表形式に並んだ問題を1つのセルに纏めるよう整形する。

A列が設問、B~F列が選択肢、F列が解答、G列が得点である。

イメージ

 

インポート結果

 

ソースコード


Option Explicit

Private Const QUESTION_NUM As Long = 10
Private Const BASE_POS As String = "A1"

' 問題をPDFファイルとして出力する
Public Sub ExportQustionsAsPDF()

    ' シート
    Dim sh As Worksheet
    Set sh = ThisWorkbook.Worksheets("Source")
    Dim export_sh As Worksheet
    Set export_sh = ThisWorkbook.Worksheets("Export")
    
    Dim base_range As Range
    Set base_range = sh.Range(BASE_POS)

    Dim i As Long
    For i = 1 To QUESTION_NUM
        Dim question As String
        Dim choice_a As String
        Dim choice_b As String
        Dim choice_c As String
        Dim choice_d As String
        Dim answer As String
        Dim point As String
        
        With base_range
            question = .Offset(i - 1, 0).Value
            choice_a = .Offset(i - 1, 1).Value
            choice_b = .Offset(i - 1, 2).Value
            choice_c = .Offset(i - 1, 3).Value
            choice_d = .Offset(i - 1, 4).Value
            answer = .Offset(i - 1, 5).Value
            point = .Offset(i - 1, 6).Value
        
            Dim text As String
            text = ""
            text = i & "." & question & vbCrLf _
                    & "A. " & choice_a & vbCrLf _
                    & "B. " & choice_b & vbCrLf _
                    & "C. " & choice_c & vbCrLf _
                    & "D. " & choice_d & vbCrLf _
                    & "ANSWER: " & answer & vbCrLf _
                    & "POINT: " & point
            
            export_sh.Cells(1, 1).Offset(i - 1, 0).Value = text
        End With
    Next
    
    ' PDFファイルとして出力
    Call export_sh.ExportAsFixedFormat(xlTypePDF, export_sh.Name)
End Sub

 

PDFへの変換は以下の1行で簡単に行うことができる。

' 出力形式:PDF
' ファイル名:シート名
Call export_sh.ExportAsFixedFormat(xlTypePDF, export_sh.Name)

 

非推奨機能の利用

ANSWERPOINTを指定すると、設問ごとの解答および得点を設定することができるが、これは非公式機能である。

Microsoftのリファレンスでは明文化されておらず、有志の方が偶然見つけたというものになるので、今後も利用できる保証はない。

その他、Formsのレイアウトや必須入力の設定などは非公式含めて出来ないらしい。