今回は、娘が英検2級を受けた際にReadingの得点が異常に低い事が解りました。一応一次試験合格の通知でしたが、正答率35%はかなり衝撃的でした。
そんな娘のために以前から気になっていたwordHolicとうアプリを進めてましたが、データ登録が多いと面倒なようで十分の活用出来ていませんでした。
取り合えず、単語Bookを買ってあたえましたが、あまり活用していないかったようで試験当日まで、単語Book全体の半分程度しか学習せずに試験を受けたようです。
結果Reding成績が著しく低い内容でギリギリでの合格点でした。
wordHolicは無料で使える優秀な単語帳アプリです、これを活用できていないのは勿体ないと考えて、wordHolicを十分活用できる環境を作ってあげようと思いデータベースとエクセル、マクロの製作をしまいた。
娘の為にwordHolicの活用データと問題作成エクセルマクロを作った。
このままでは、準1級の合格は果てしなく遠いと思い、英検2級の二次試験まえではありますが、娘が英検準1級のが合格する為にを英検準1級用のwordHolicのデータCSVとその元データかあら単語テスト問題を作成するマクロを作成してPDFに出力して印刷して小テストを作ります。参考の為どの様なものを作成したのか説明します。
まずはCSV作成
このCSVはwordHolicにそのままデータを取り込めます。
wordHolicのアプリからひな形を取り込めますので、エクセル上でそのまま英語表記と和訳の表記を入力し4行目と5行目に音声出力のコードを入れる事でアプリ内で文字と音声が出力されます。
エクセルで作ったデータをCSVで出力します。

作ったCSVをwordHolicに取り込もう

名前をつけて新しいフォルダを作ろう
今回は英検準1級のメインフォルダとサブフォルダに1~600・601~1200というフォルダを作成した。
サブフォルダの名称は、CAVデータを単語を1200データ分600データづつに分けて作成した為その番号にした。


・単語データ取り込みからを選択
・ファイルデータインポートをクリック


取り込むCSVデータとインポート先のフォルダを選択する。
今回はサブフォルダの601~1200に取り込んだ


取り込んだファイルを選択し単語データを開くと英単語が表記されます、タップすると日本語が表記されます。
右スライドで次の英単語に移ります。
下記の音声設定に及びスライド再生の設定またスライドするスピードの設定により自分に合わせた学習方法を選択できます。
wordHolicで学習したらエクセルマクロで確認テストを実施しよう。





左の図はエクセル上の製作したマクロをアドイン登録しています。アドインコマンドからマクロを起動させてテストデータを作ってみよう
①チェックボックス作成を起動し製作したデータCSVの元データにチェックボックスを挿入します。
チェックボックスはデータの数の分自動で作成してくれます。
②チェックボックスが配置された事を確認し覚えたい単語にチェックを入れます。
チェックボックスにチェックを入れることで、あとでテストプリント作成の時に選択できるようになります。
③TSET作成を起動させます。
④ユーザーフォームが起動され問題の作成設定をおこないます。
⑤問題形式の選択・英語への和訳の問題か、日本語に対する英語の問題かを選択します。
⑥問題の内容を選択します。チェックボックスにチェックを入れるとエクセルシートに記載された全データを問題として作成いします。
チェックを無しにした場合②でチェックボックスにチェックした単語のみを問題として作成します。
⑦エクセル上に新たなシートTEST@(問題)とTEST@A答えのシートが作成されます。
左の図はすべての単語を出力するを選択した場合テスト問題と答えになります。
必要に応じて印刷して確認テストを実施しよう。


左の画像はチェックした単語のみ問題作成しています。
Noと書かれてある番号が元データの番号になりますのでチェックを入れたり外したりする場合テストの結果からチェックしやすくなっています。
基本的には、wordHolicで学習した成果の確認と実際に書きとりができるか、英単語のスペルは正しく覚えているかなどを確認するためのテスト作成ツールになります。
今回紹介した内容は、エクセルで出来る簡単な内容です。
実際に機能はいくらでも拡張できますので必要な機能を追加して使ってみてください。
今は、データベース内のチェックボックスのチェックを楽にできる方法、出題範囲を選択して出力するほうほう、音声アプリを利用してエクセルデータベースをもっと楽に作れるようできる方法などを製作しています。
簡単なVBAプログラムです。
とても簡単なVBAですのでUserFormの部分のプログラムを書いておきます。
初心者でも作れる内容ですので試してみてください。
Private Sub CommandButton1_Click()
Dim a, b, c, d, e, f, g, h, j, Nam, Nam1, Nam2 'aは問題選択
b = Cells(Rows.Count, 1).End(xlUp).Row 'データ数の取得
c = 2
g = 33
If OptionButton1.Value = True Then
' OptionButton1 が選択されている場合の処理
h = 2
j = 3
ElseIf OptionButton2.Value = True Then
' OptionButton2 が選択されている場合の処理
h = 3
j = 2
Else
' どのオプションボタンも選択されていない場合の処理
MsgBox "出題形式が選択されていません"
End If
Dim activeSheet As Worksheet
Set activeSheet = ActiveWorkbook.activeSheet
Dim sheetName As String
sheetName = activeSheet.Name
Nam = sheetName
Sheets("TEST-tmp").Copy after:=Sheets(1)
'Sheets.Add after:=Sheets(1)
Sheets(2).Name = "TEST" & Nam
Nam1 = "TEST" & Nam
Sheets("TEST-tmp").Copy after:=Sheets(1)
Sheets(2).Name = "TEST" & Nam & "Q"
Nam2 = "TEST" & Nam & "Q"
If CheckBox1.Value = True Then
' チェックボックスがチェックされた状態の場合の処理
MsgBox "全ての問題を出力します。"
For c = 2 To b
e = Sheets(Nam1).Cells(Rows.Count, 2).End(xlUp).Row + 1 'データ数の取得
If e = g Then
f = Sheets(Nam1).Cells(Rows.Count, 5).End(xlUp).Row + 1 'データ数の取得
If e = f Then
'e = e + 1
Sheets(Nam1).Cells(e, 2) = "問題"
Sheets(Nam1).Cells(e, 3) = "回答"
Sheets(Nam1).Cells(e, 5) = "問題"
Sheets(Nam1).Cells(e, 6) = "回答"
'回答記入*********
Sheets(Nam2).Cells(e, 2) = "問題"
Sheets(Nam2).Cells(e, 3) = "回答"
Sheets(Nam2).Cells(e, 5) = "問題"
Sheets(Nam2).Cells(e, 6) = "回答"
'*************
g = g + 32
a = g - 1
With Sheets(Nam1)
.Range(.Cells(e, 1), .Cells(a, 6)).Borders.LineStyle = xlContinuous
End With
With Sheets(Nam2)
.Range(.Cells(e, 1), .Cells(a, 6)).Borders.LineStyle = xlContinuous
End With
e = e + 1
Sheets(Nam1).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(e, 2) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(e, 2) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(e, 3) = Sheets(Nam).Cells(c, j)
'***********
'Range(Cells(5, 1), Cells(cc, 9)).Borders.LineStyle = xlContinuous
ElseIf e > f Then
Sheets(Nam1).Cells(f, 4) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(f, 5) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(f, 4) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(f, 5) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(f, 6) = Sheets(Nam).Cells(c, j)
'***************
End If
'Sheet(sheetName).Cells(c, 1) = Sheet(Nam).Cells(c, 1)
'Sheet(sheetName).Cells(c, 2) = Sheet(Nam).Cells(c, 2)
'Sheet(sheetName).Cells(c, 2) = Sheet(Nam2).Cells(c, 2)
'Sheet(sheetName).Cells(c, 3) = Sheet(Nam2).Cells(c, 2)
Else
Sheets(Nam1).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(e, 2) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(e, 2) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(e, 3) = Sheets(Nam).Cells(c, j)
End If
' e = e + 1
Next c
ElseIf CheckBox1.Value = False Then
' チェックボックスがチェックされていない状態の場合の処理
MsgBox "チェックされた問題を出力します。"
For c = 2 To b
If Sheets(Nam).Cells(c, 8).Value = "True" Then
e = Sheets(Nam1).Cells(Rows.Count, 2).End(xlUp).Row + 1 'データ数の取得
If e = g Then
f = Sheets(Nam1).Cells(Rows.Count, 5).End(xlUp).Row + 1 'データ数の取得
If e = f Then
'e = e + 1
Sheets(Nam1).Cells(e, 2) = "問題"
Sheets(Nam1).Cells(e, 3) = "回答"
Sheets(Nam1).Cells(e, 5) = "問題"
Sheets(Nam1).Cells(e, 6) = "回答"
'回答記入*********
Sheets(Nam2).Cells(e, 2) = "問題"
Sheets(Nam2).Cells(e, 3) = "回答"
Sheets(Nam2).Cells(e, 5) = "問題"
Sheets(Nam2).Cells(e, 6) = "回答"
'*************
g = g + 32
a = g - 1
With Sheets(Nam1)
.Range(.Cells(e, 1), .Cells(a, 6)).Borders.LineStyle = xlContinuous
End With
With Sheets(Nam2)
.Range(.Cells(e, 1), .Cells(a, 6)).Borders.LineStyle = xlContinuous
End With
e = e + 1
Sheets(Nam1).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(e, 2) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(e, 2) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(e, 3) = Sheets(Nam).Cells(c, j)
'***********
'Range(Cells(5, 1), Cells(cc, 9)).Borders.LineStyle = xlContinuous
ElseIf e > f Then
Sheets(Nam1).Cells(f, 4) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(f, 5) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(f, 4) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(f, 5) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(f, 6) = Sheets(Nam).Cells(c, j)
'***************
End If
'Sheet(sheetName).Cells(c, 1) = Sheet(Nam).Cells(c, 1)
'Sheet(sheetName).Cells(c, 2) = Sheet(Nam).Cells(c, 2)
'Sheet(sheetName).Cells(c, 2) = Sheet(Nam2).Cells(c, 2)
'Sheet(sheetName).Cells(c, 3) = Sheet(Nam2).Cells(c, 2)
Else
Sheets(Nam1).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam1).Cells(e, 2) = Sheets(Nam).Cells(c, h)
'回答記入*********
Sheets(Nam2).Cells(e, 1) = Sheets(Nam).Cells(c, 1)
Sheets(Nam2).Cells(e, 2) = Sheets(Nam).Cells(c, h)
Sheets(Nam2).Cells(e, 3) = Sheets(Nam).Cells(c, j)
End If
' e = e + 1
Else
End If
Next c
End If
Unload UserForm1
End Sub
参考にして使ってみてね。
そのうち別のプログラムも紹介します。

コメント