microsoftoffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はword...

43
Microsoft Office 課題の自動採点プログラム ! はじめに " プログラムの概要 # Word の課題 $ Excel の課題 % PowerPoint の課題 & 総合課題 ' 一括採点 ( むすび ! はじめに 情報リテラシー教育の中に,文書作成,表計算,プレゼンテーションを含め ているところが多いであろう。具体的には Microsoft Office を使って課題を作 成させ,それを提出させて採点することになる。採点作業は手間がかかるし, 問題点を指摘して再提出させようとすれば日数もかかる。そのため本学でも, Moodle[1]を導入し,市販教材[2]も利用してきたが,それでは選択肢問 題が中心になる。一方,岩田員典ら[3]は,WordExcel のファイルを提出 させ,内部を解析した上で採点するシステムを開発している。そのやり方とは 異なるが,Office の課題を受講生自身が採点できる自動採点プログラムを作成 してみたので公表する。今回,作成し,公表するのは次の6つの課題に対する プログラムである。

Upload: others

Post on 24-Sep-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Microsoft Office 課題の自動採点プログラム

中 村 邦 彦

� はじめに

� プログラムの概要

� Wordの課題

� Excelの課題

� PowerPointの課題

� 総合課題

� 一括採点

むすび

� は じ め に

情報リテラシー教育の中に,文書作成,表計算,プレゼンテーションを含め

ているところが多いであろう。具体的にはMicrosoft Officeを使って課題を作成させ,それを提出させて採点することになる。採点作業は手間がかかるし,

問題点を指摘して再提出させようとすれば日数もかかる。そのため本学でも,

Moodle[1]を導入し,市販教材[2]も利用してきたが,それでは選択肢問題が中心になる。一方,岩田員典ら[3]は,Word,Excelのファイルを提出させ,内部を解析した上で採点するシステムを開発している。そのやり方とは

異なるが,Officeの課題を受講生自身が採点できる自動採点プログラムを作成してみたので公表する。今回,作成し,公表するのは次の6つの課題に対する

プログラムである。

―1―

Page 2: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

1.Wordの課題1 案内状の作成

2.Wordの課題2 表と画像を含むレポート形式の文書の作成

3.Excelの課題1 基本的な集計表の作成

4.Excelの課題2 グラフの作成

5.PowerPointの課題 基本的なスライドファイルの作成

6.総合課題 Wordの文書の中に Excelで作成したグラフを埋め込む

総合課題は授業時間中に時間を決めて一斉に実施する試験のように行った。

そのための模擬試験問題も作成したので,実際に作成したプログラムは7つあ

るが,模擬試験問題と総合課題はプログラムとしてはほぼ同じなのでここでは

説明と公表を省略した。

プログラムはすべて Excel VBAで記述した。Microsoft Officeが標準的にインストールされている環境であれば実行可能なので,受講生が自分で採点でき

る。これらの採点プログラムは2011年度の香川大学法学部・経済学部夜間主

コースの授業で使用して,いくつかの問題点を修正したものである。まだ開発

途上ではあるが,一応,実用に耐えるレベルにはなっていると考えている。以

下順にこれらのプログラムを説明する。ソースプログラムを含む ExcelのワークシートはWebサイトに掲載している。1)

� プログラムの概要

ここではすべての採点プログラムに共通のことがらを説明する。

プログラムは Excelの VBAで記述することにした。Excelをメインにしたのは採点項目をワークシートに記述し,その結果もワークシートとして出力する

方が扱いやすく,見やすくなると考えたからである。Wordの課題1を例にして説明する。課題の配布と提出にはMoodleを使っている。受講生はまず課題の指示をMoodleから得る。それを見て課題を作成した受

講生は,Moodleから採点プログラム(Excelのマクロを含むファイル)をダウ

1) http://kunics.tea-nifty.com/blog/officeautomark.html

―2― 香川大学経済学部 研究年報 51 2011

Page 3: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

ンロードし,それを開くと図1のようなワークシートが表示される。そこで「採

点する」ボタンをクリックすると,ダイアログが開くので,採点対象のWord文書を指定する。採点が行われ,新しいワークシートに図2のような採点結果

が表示される。受講生は結果を見て問題があれば修正し,×印がなくなったら

課題ファイルをMoodleに提出する。以上が大まかな流れである。最初に与える課題がWordの課題であれば,学生はその時点ではまだ Excel

の説明を聞いていないので都合が悪いはずであるが,最近の大学1年生は,ほ

とんどがパソコン使用経験があるので,この程度の操作は問題がないと考えら

図1 Word 課題の自動採点ワークシート

Microsoft Office課題の自動採点プログラム ―3―

Page 4: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

れる。

Excelから Excelのファイルを開くのは問題ないが,ExcelからWordとPowerPointを起動するには,VBAの参照設定をしておく方が望ましい。たとえば Excel2010においては標準で設定されている参照は次の4つだけである。�Visual Basic For Applications�Microsoft Excel14.0Object Library�OLE Automation�Microsoft Office14.0Object Library

したがって次の2つは追加する方がよい。

�Microsoft Word14.0Object Library�Microsoft PowerPoint14.0Object Library

Office2007であれば次の2つになる。�Microsoft Word12.0Object Library�Microsoft PowerPoint12.0Object Library

図2 Word 課題1の採点結果

―4― 香川大学経済学部 研究年報 51 2011

Page 5: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

初心者にこれらを追加させるのは無理なので,プログラムはこれらの参照が

設定されていないものとして作成した。具体的にはWordと PowerPointのApplicationオブジェクトを作成するときに,それぞれの CreateObjectメソッドを使う。それによりそれぞれのオブジェクトを使用できるようになるが,これ

だけでは定数名を使うことができない。プログラムで定数も使えるようにでき

るらしいが,Officeのバージョンが異なっていると面倒なので,必要な定数はプログラム内で定義することにした。

ファイルを開くときはそれぞれの Openメソッドを使うが,採点対象ファイルのファイル名を取得するダイアログは Excelで行っている。Wordの場合,先にWordの Application Objectを作成して,Wordのダイアログを開いたところ,ダイアログが Excelのワークシートに隠れて見えないことがあったからである。

図3 VBAの参照設定ダイアログ

Microsoft Office課題の自動採点プログラム ―5―

Page 6: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Excelからファイルダイアログを開くのは次のようにした。

Private Function GetFileName() As String

With Application.FileDialog(msoFileDialogFilePicker)

.InitialFileName = ActiveWorkbook.Path

.Filters.Add “Word File”, “*.doc ; *.docx ; *.odt”

.FilterIndex = 1

.AllowMultiSelect = False

If .Show() = True Then

GetFileName = .SelectedItems(1)

Else

GetFileName = “”

End If

End With

End Function

FilterIndexは,複数のファイルフィルターを設定したとき,何番目のフィルターを使うかを指定するのだが,ここではひとつなので1にしてある。これは

省略可能である。この例はWord用であるが,Excelと PowerPointのときはFilterを次のように変える。

.Filters.Add “Excel File”, “*.xls ; *.xlsx ; *.ods”

.Filters.Add “Ppt File”, “*.ppt ; *.pptx ; *.odp”

拡張子に odt,ods,odpが追加してあるのは,OpenOffice. orgで作成したファイルも対象にしたかったからである。ただし,PowerPointの課題にSmartArtを使って,OpenOffice. orgどころか Office2003でも作成できない課題を作ってしまったのでそれが不可能になった。現状はWordの課題1くらいしか対応していない。

正規表現の利用

VBAの中で正規表現を使うために VBScriptの RegExpオブジェクトを使っている。

―6― 香川大学経済学部 研究年報 51 2011

Page 7: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

正規表現オブジェクトの作成

Dim objRe As ObjectSet objRe = CreateObject(“VBScript.RegExp”)

文字列の検索

objRe.Pattern = “正規表現”objRe.IgnoreCase = FalseobjRe.Global = FalseobjRe.test(検索対象の文字列)

文字列の抽出

Dim moDim strMatch as StringobjRe.Pattern = “正規表現”Set mo = objRe.Execute(対象の文字列)strMatch = mo(0).Value

これにより strMatchに正規表現にマッチする最初の文字列が得られる。

文字列の置換

objRe.Pattern = “正規表現”strReplacedString = objRe.Replace(入力文字列,置換文字列)

� Wordの課題

Wordの課題1は簡単な案内文の作成である。図4にその見本を示す。受講生には見本を PDF形式で提供し,次の指示を与える。

課題1への指示

1.用紙は A4判を縦長に使う。2.上下左右の余白をそれぞれ30mmに設定する。

Microsoft Office課題の自動採点プログラム ―7―

Page 8: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

図4 Word の課題1

―8― 香川大学経済学部 研究年報 51 2011

Page 9: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

3.標準の文字サイズを10.5ポイント(Wordの標準設定)のままにする。4.1ページの行数を36行にする。

5.発信日を右揃えにする。

6.発信者の2行を右揃えする。

7.タイトルのフォントを『MSPゴシック』,フォントサイズを16ポイント,フォントスタイルを標準(太字や斜体にしない),行揃えを中

央揃えにする。

8.段落の先頭行は1字空白を入れて字下げする。(「香川大学では…」と

「つきましては…」の2行)

9.「敬具」を右揃えにする。

10.「記」を中央揃えにする。

11.別記の内容を全体に4文字右にインデントし,10文字の位置にタブ

を設定する。タブの行揃えは左揃え,タブのリーダーはなしにする。

(空白によるインデントは正解になりません。)

12.「以上」を右揃えにする。

13.作成者の学籍番号と○○○○を自分の学籍番号と氏名に修正する。

補足

案内文のテキストデータは掲載の PDFファイルからコピーして使ってもかまいません。

Word 文書ファイルのOpen

Dim objWord as Object

Dim ObjDoc as Object

Set objWord = CreateObject(“Word.Application”)

objWord.Visible = False

Set objDoc = objWord.Documents.Open(FileName : =strWordFileName, _

ReadOnly : =True)

Microsoft Office課題の自動採点プログラム ―9―

Page 10: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

ここで objWordはWord. Applicationを,objDocはWord. Documentを表すオブジェクト変数である。

objWord. Visibleを Falseに設定すると,Word文書の表示を抑制できる。

Word 文書ファイルのClose

objDoc.Close SaveChanges : =FalseobjWord.Quit

ファイルを閉じるときに,SaveChanges : =Falseを指定しているのは,プログラムで文書の設定を読み出しただけでファイルが更新されたと判断されるこ

とがあるらしく,閉じるときに名前を付けて保存するかと問い合わせるダイア

ログが表示されるのを避けるためである。

ページ設定情報

用紙サイズは用紙の縦と横の長さとして設定されている。

Documentオブジェクト. PageSetup. PageWidthDocumentオブジェクト. PageSetup. PageHeight単位がポイントなのでWord. Applicationのメソッド PointsToMillimetersでミリメートルに変換して判定する。

用紙の向きはWordにおいては「印刷の向き」と表示されるが,意味がわかりにくいので,「用紙の向き」と呼ぶことにした。

Documentオブジェクト. PageSetup. Orientationの値が wdOrientPortraitか wdOrientLandscapeかで判定する。余白

Documentオブジェクト. PageSetup. TopMarginDocumentオブジェクト. PageSetup. BottomMarginDocumentオブジェクト. PageSetup. LeftMarginDocumentオブジェクト. PageSetup. RightMargin単位はポイントである。

―10― 香川大学経済学部 研究年報 51 2011

Page 11: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

通常はこれでよいのだが,複数のセクションを持つ文書の場合はこれらの値

が不定になっていることがある。対策として余分なセクション区切りが含まれ

ている場合には警告を表示し,かつ次のようにして先頭のセクションの値を使

うことにした。

Documentオブジェクト. Sections(1). PageSetup. TopMarginPDFをコピーしてそのままWordに貼り付けるとセクション区切りが作成されることがある。テキストだけを貼り付けるときは問題ない。

1ページの文字数と行数の指定

Documentオブジェクト. PageSetup. LayoutModeが wdLayoutModeDefaultならば標準モード,wdLayoutModeLineGridならば行数だけを指定するモード,wdLayoutModeGridならば文字数と行数を指定するモードである。

段落の行揃え

Wordでは単に配置と表示されるが,配置には水平方向と垂直方向の配置があるので,ここでは水平方向の配置を行揃えと表記する。

行揃えは Paragraphオブジェクトの Alignmentプロパティに設定されている。その値が wdAlignParagraphLeftなら左揃え,wdAlignParagraphCenterなら中央揃え,wdAlignParagraphRightなら右揃え,wdAlignParagraphJustifyなら両端揃えである。

フォント

パラグラフに設定されているフォント名 Paragraphオブジェクト. Font. Nameフォントサイズ Paragraphオブジェクト. Range. Font. Sizeフォントの太字設定 Paragraphオブジェクト. Range. Font. Bold

パラグラフ先頭行の1字下げ

先頭行に1字下げのインデントを設定するか,行頭に全角空白1文字が挿入

されていれば正解にする。フォントが等幅文字であれば全角空白による1字下

Microsoft Office課題の自動採点プログラム ―11―

Page 12: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

げは認めてもよいであろう。

インデントは Paragraphオブジェクトの Range. ParagraphFormat. CharacterUnitFirstLineIndentに設定されている。FirstLineIndentはポイント単位,CharacterUnitFirstLineIndentは文字単位の値である。

タブの設定

i番目のタブの位置(単位は文字)Paragraphオブジェクト. Range. ParagraphFormat. TabStops(i). Position

i番目のタブの行揃えParagraphオブジェクト. Range. ParagraphFormat. TabStops(i). Alignment

i番目のタブのリーダーParagraphオブジェクト. Range. ParagraphFormat. TabStops(i). Leader

タブリーダーの設定値

なし wdTabLeaderSpaces点線 wdTabLeaderDots破線 wdTabLeaderDashes直線 wdTabLeaderLines中点 wdTabLeaderMiddleDot

Wordの課題2は図と表を含む2ページの報告書の作成である。その見本を図5,図6に示す。

Word の課題2の指示文

1.A4判用紙を縦長に使い,上下左右の余白を25mmにする。2.1ページの文字数と行数は設定しない(Wordでは標準の文字数)。3.組み込みスタイルの「標準」を次のように設定する。

日本語用フォント MS明朝英数字用フォント Century Schoolbook

―12― 香川大学経済学部 研究年報 51 2011

Page 13: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

図5 Word の課題2の1ページ目

Microsoft Office課題の自動採点プログラム ―13―

Page 14: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

図6 Word の課題2の2ページ目

―14― 香川大学経済学部 研究年報 51 2011

Page 15: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

文字サイズ 10pt行間隔の行間 最小値

行間隔の間隔 17pt4.『情報リテラシー課題「インターネットの進展」』をヘッダーに表示する。

5.ヘッダーの行揃えを左寄せにする。

6.ヘッダーの位置は用紙上端から15mmの位置から始まるように設定する。7.フッターにページ番号を表示し,行揃えは中央揃えにする。

8.フッターの位置は用紙下端から12mmで終わるようにする設定する。9.日付を右揃えにする。

10.学籍番号氏名の学籍番号と氏名を自分のものに変更し,行揃えは右揃えに

する。

11.「インターネットの進展」をタイトルとし,組み込みスタイルの「表題」に

設定する。

12.表題のスタイルを次のように設定する。

スタイルのフォント MS Pゴシックスタイルのフォントサイズ 14ptスタイルのフォントスタイル 標準

スタイルの行揃え 中央揃え

13.次の各行を節見出しとして組み込みスタイル「見出し1」に設定する。

1 インターネットの歴史

2 世界のインターネット利用者数

3 日本のインターネット利用者数

4 利用目的

5 むすび

参考文献

14.組み込みスタイル「見出し1」を次のように変更する。

スタイルの日本語用フォント MSゴシックスタイルの英数字用フォント Arialスタイルのフォントサイズ 11pt

Microsoft Office課題の自動採点プログラム ―15―

Page 16: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

スタイルのフォントスタイル 標準

15.インターネットの画像を埋め込み次のように設定する。

高さと幅を共に50%に縮小する。

垂直位置 段落の上端

水平位置 段落の右端

16.テーブルを作成し次のように設定する。

テーブル全体を中央揃えに配置する。

行・列共に見出しセルの背景色を明るい色に設定する。

17.利用者数の画像を埋め込み次のように設定する。

高さと幅を共に50%に縮小する。

水平位置 中央揃え

18.利用目的の3項目を箇条書きにする。

番号付き箇条書にアラビア数字を使い,左側インデントを2字にする。

19.Mixi,Twitterの利用者数の画像を埋め込み次のように設定する。高さと幅を共に60%に縮小する。

水平位置 中央揃え

20.参考文献の各項目を次のように設定する。

1行目のインデント 0字

2行目以降のインデント 1字

ヘッダーとフッターの位置

Documentオブジェクト. PageSetup. HeaderDistanceDocumentオブジェクト. PageSetup. FooterDistanceヘッダー位置は用紙の上端からヘッダーの上端までの距離,フッター位置は

用紙の下端からフッターの下端までの距離である。ただし,Wordではヘッダーもフッターも標準では2行分の領域が確保されている。

―16― 香川大学経済学部 研究年報 51 2011

Page 17: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

ヘッダーの内容

Documentオブジェクトの Sections(1). Headers(wdHeaderFooterPrimary). Range.Textフッターの内容

Documentオブジェクトの Sections(1). Footers(wdHeaderFooterPrimary). Range.Text

スタイル

スタイルは Documentオブジェクトの Stylesコレクションである。例えば「標準」の Styleオブジェクトは次のように指定する。Documentオブジェクト. Styles(“標準”)日本語用フォント名 Styleオブジェクト. Font. NameFarEast英数字用フォント名 Styleオブジェクト. Font. NameAscii文字サイズ Styleオブジェクト. Font. Size行間隔の行間(Wordのダイアログの表記による)Styleオブジェクト. ParagraphFormat. LineSpacingRule

この値が,wdLineSpaceSingleなら1行,wdLineSpaceAtLeastなら最小値などとなっている。

行間隔の間隔(Wordのダイアログの表記による)Styleオブジェクト. ParagraphFormat. LineSpacing

単位はポイント

図形

Wordは図形を Shapesと InlineShapesに分けて管理している。オートシェイプは常に Shapesである。その他はレイアウトによってどちら

かになる。この課題では1ページ目の右上にあるインターネットを表す画像が

Shapesである。この画像はファイルで提供し,それを埋め込んで段落に配置するように指示して,そのサイズと位置を確認している。残念ながら図の内容

は確認はできていない。

Microsoft Office課題の自動採点プログラム ―17―

Page 18: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

画像の高さ Shapeオブジェクト. Height画像の幅 Shapeオブジェクト. Width単位はピクセル

画像の垂直位 Shapeオブジェクト. Top画像の水平位置 Shapeオブジェクト. Left単位はポイント。右端のときは Leftが wdShapeRightになっている。

InlineShapesのときは文字と同様に水平位置の確認に Alignmentが使える。InlineShapeオブジェクト.Range.ParagraphFormat.Alignment

箇条書き

特定の Paragraphが箇条書きになっているかどうかParagraphオブジェクト. Range. ListParagraphs. Countこの値が正であれば箇条書きになっている。

箇条書きスタイル

Paragraphオブジェクトの次の値に設定されている。. Range. ListFormat. ListTemplate. ListLevels(1). NumberStyleアラビア数字 wdListNumberStyleArabicローマ数字大文字 wdListNumberStyleUppercaseRomanロー数字小文字 wdListNumberStyleLowercaseRoman英字大文字 wdListNumberStyleUppercaseLetter英字小文字 wdListNumberStyleLowercaseLetter丸付き数字 wdListNumberStyleNumberInCircleあいうえお wdListNumberStyleAiueoイロハ wdListNumberStyleIroha黒丸 wdListNumberStyleBullet

―18― 香川大学経済学部 研究年報 51 2011

Page 19: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

テーブル

文書に含まれるテーブルの数 Documentオブジェクト. Tables. Count行数 Tableオブジェクト. Rows. Count列数 Tableオブジェクト. Columns. Count表の水平位置 Tableオブジェクト. Rows. AlignmentCellオブジェクト(i行,j列の要素) Tableオブジェクト. Cell(i, j)セルの背景色 Cellオブジェクト. Shading. BackgroundPatternColorこの値が wdColorAutomaticでなければ何かが設定されている。

インデント

パラグラフのインデントは Paragraphオブジェクトの. Range. ParagraphFormat. CharacterUnitLeftIndentに設定されている。+は字下げ,-は逆方向で,いわゆるぶら下げインデント

先頭行のインデントは同様に

. Range. ParagraphFormat. CharacterUnitFirstLineIndentに設定されている。FirstLineIndentはポイント単位,CharacterUnitFirstLineIndentは文字単位の値である。

ページ数

Documentオブジェクト. BuiltInDocumentProperties(“Number of Pages”)この方法ではファイルが更新されるらしく終了するとき保存するかと聞かれる

ので objDoc. Closeのオプション設定が必要である。次の方法でも確認できる。Wordアプリケーション. ActiveWindow. ActivePane. Pages. Countこの場合はオプション設定がなくても聞かれない。

� Excelの課題

Excelの課題1は,数式と表計算関数を使う簡単な集計表を作成する課題である。その見本を図7に示す。

Microsoft Office課題の自動採点プログラム ―19―

Page 20: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Excel の課題1の指示

1.シートの枚数を1枚だけにし,その名前を「模擬店売上」にする。

2.タイトルとして A1に「模擬店売上一覧」と入力し,A1と B1のセルを結合,文字の配置を左揃え,フォントサイズを16ptにする。

3.D2の学籍番号,E2の氏名を自分のものに変更する。4.A3:E3に図のように文字を入力し,それぞれの文字を中央揃えにする。5.A4:A9,C10,C11に図のように文字を入力する。6.D4にホットコーヒーの金額(金額=単価×数量)を計算する式を入力す

る。

7.D4の式を D5:D9にコピーする。コピーされた式は正しい結果を表示しなければならない。

8.D10に関数 SUMを使って D4:D9の合計を計算する式を入力する。9.D11に関数AVERAGEを使ってD4:D9の平均を計算する式を入力する。10.E4にその商品の金額が売上平均より大きいか等しければ“大”,そうで

なければ“小”と表示する式を入力する。

図7 Excel の課題1

―20― 香川大学経済学部 研究年報 51 2011

Page 21: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

11.E4の式を E5:E9にコピーする。コピーされた式は正しい結果を表示しなければならない。

12.D4:D11の書式をカンマ表示にする。13.列 Aの幅を15字にする。14.行1の高さを24ptにする。15.図と同様にセルの背景色を明るい色に設定する。

16.図と同様に罫線を表示する。

補足

自己採点ワークシートでは式の結果だけでなく,式そのものが正しいかどう

かを判定しているところがあります(D4:E9)。故意に複雑にしたような式は正解であっても間違いと判定されることがあります。単純な式で解答してく

ださい。絶対参照を指定する$については不要な$があっても正解になりま

す。

採点項目ワークシート

Excelの採点項目にはセル範囲の指定を追加した。Excelでは,どのセル,またはどのセル範囲に何を設定するかという指定が多いためである。指定は

Excelと同様に A1または A1:B1のようにセル番地かセル範囲を記述する。

Workbook を開く

採点プログラム自身がひとつのWorkbookである。それに加えて採点対象のWorkbookを開くので複数のWorkbookが開かれることになる。識別を簡単にするために最初に採点プログラムだけが開かれている状態を確認するように

し,oPrimBookにそれを設定する。

Dim oPrimBook as ObjectSet oPrimBook = Workbooks(1)

Microsoft Office課題の自動採点プログラム ―21―

Page 22: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

開かれているWorkbookの数は次のプロパティで取得する。Workbooks. Count

取得したファイル名のWorkbookを開くには次のようにしている。

Set objBook = Workbooks.Open(filename : =strExcelFileName, _

ReadOnly : =True)

objBook.Windows(1).Visible = False

Set oUserSheet = objBook.Sheets(1)

ここで objBookは採点対象のWorkbook,oUserSheetはそのWorksheetを表すオブジェクト変数である。objBook. Windows(1). Visibleを Falseに設定することにより,採点対象のWorkbookの表示を抑制できる。Trueにすれば表示される。

ワークシート

ワークシートの数 Workbookオブジェクト. Worksheets. Counti番目のWorksheetに設定された名称Workbookオブジェクト. Sheets(i). Name

セルとセル範囲

そのセル範囲を文字列 strRangeに読み込み Rangeオブジェクト変数 oRangeに Rangeを設定する。

Dim strRange As String

Dim oRange As Range

Set oRange = oUserSheet.Range(strRange)

以下,Rangeオブジェクト.~としているのはすべてこれである。セルに設定された文字列

Worksheetオブジェクト. Cells(i, j). Value

―22― 香川大学経済学部 研究年報 51 2011

Page 23: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

セル結合

Rangeオブジェクト.MergeCellsが Trueかどうかで判定する。行揃えは Rangeオブジェクトの HorizontalAlignmentの値で判定する。フォントサイズは Rangeオブジェクトの Font. Sizeに設定されている。文字列 Rangeオブジェクト. Value数値

数値を小数何桁まで確認するのかは項目欄に「数値小数桁 n」のように記述しておき,Round(x, n)によりその桁数まで確認する。数式 Rangeオブジェクト. Formula背景色 Rangeオブジェクト. Interior. Color色は BGRの3バイトである(RGBの順ではない)。明るさを次の関数で判定した。

Private Function ColorBrightness(ByVal c As Long) As Long

ColorBrightness = Int((c Mod 256 + Int(c / 256) Mod 256 + _

Int(c / 65536)) / 256)

End Function

罫線

Rangeオブジェクトのすべての罫線が設定されているかどうかで確認した。

Private Function gridtest(ByVal strRa As String) As Boolean

Dim oRa

Set oRa = oUserSheet.Range(strRa)

gridtest = _

oRa.Borders(xlEdgeLeft).LineStyle = xlContinuous And _

oRa.Borders(xlEdgeTop).LineStyle = xlContinuous And _

oRa.Borders(xlEdgeBottom).LineStyle = xlContinuous And _

oRa.Borders(xlEdgeRight).LineStyle = xlContinuous And _

oRa.Borders(xlInsideVertical).LineStyle = xlContinuous And _

oRa.Borders(xlInsideHorizontal).LineStyle = xlContinuous

End Function

Microsoft Office課題の自動採点プログラム ―23―

Page 24: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

罫線のスタイルは Excel VBAのヘルプに記述がある。Excel開発者用リファレンス> XlLineStyle>列挙

列の幅(単位は文字)

Worksheetオブジェクト. Columns(strRange). ColumnWidth行の高さ(単位はポイント)

Worksheetオブジェクト. Rows(strRange). RowHeight

書式

カンマ表示

Rangeオブジェクト. NumberFormatLocalの左端4文字が“#,##”になっていることで確認している。カンマ表示に設定すると Rangeオブジェクト.Styleが“Comma[0]”に設定されるらしいが,NumberFormatLocalの方が正しいようである。

今回は使わなかったが,その他の書式

標準 “G/標準”文字列 “@”

パーセンテージ “0%”,“0.0%”,“0.00%”

数式の正解の保護

Wordの採点プログラムには設定値が書いてあって,それが見えても問題はないが,Excelの採点プログラムでは正しい数式を見せるわけにはいかない。そこで,数式の正解を VBAマクロの中に記述し,その VBAプロジェクトをパスワードで保護することにした。Excelにはいくつかの保護機能があるので,記録のためにその手順を掲載しておく。

VBAプロジェクトにパスワードを設定する手順

� ワークシートを表示している状態で「開発」タブの「Visual Basic」をクリックして Visual Basicを表示する。

―24― 香川大学経済学部 研究年報 51 2011

Page 25: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

� もし,画面左側にプロジェクトペインが表示されていなかったらメニュー

「表示」→「プロジェクトエクスプローラー」を選択して表示する。

� 左ペインのエクスプローラーから,「VBAProject(ファイル名)」を右クリックして「VBAProjectのプロパティ(E)」を選択する。

� ダイアログが出てくるので,タブの「保護」をクリック。

� プロジェクトのロックの枠の「プロジェクトを表示用にロックする(V)」にチェックを入れる。

� パスワード欄にパスワードを入力し,「OK」をクリックする。

保護された VBAプロジェクトを表示する手順

� ワークシートを表示している状態で「開発」タブの「Visual Basic」をクリックして Visual Basicを表示する。

� VBAProject(ファイル名)が閉じた状態で表示されるのでその左端の「+」ボックスをクリックする。

図8 VBAマクロを保護するパスワードの設定

Microsoft Office課題の自動採点プログラム ―25―

Page 26: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

� パスワード入力を促されるのでパスワードを入力する。

保護された VBAプロジェクトの保護を解除する手順

� 上記「保護された VBAプロジェクトを表示」によりプロジェクトを表示する。

� 左ペインのエクスプローラーから,「VBAProject(ファイル名)」を右クリックして「VBAProjectのプロパティ(E)」を選択する。

� ダイアログが表示されるので,タブの「保護」をクリック。

� プロジェクトのロックの枠の「プロジェクトを表示用にロックする(V)」のチェックを消す。

� パスワード欄を空白にして「OK」をクリックする。

数式の採点

正しい結果を与える数式は無限に存在するので,結果の値が正しいことと,

数式の形がそれらしくなっていることを組み合わせて判定している。関数を使

うように指定しているものはその関数が使われているかどうかだけを調べた。

Excelの課題2はグラフを作成する課題である。その見本を図9に示す。

Excel の課題2の指示

1.サイズが概ね A10: G26に重なるように調整する。2.横軸が月,縦軸が売上高になるようにする。

3.上部にタイトルを表示する。

4.タイトルは「部門別売上高の推移」。

5.フォントは「MS Pゴシック」,サイズは18pt,太字にしない。6.軸ラベルを挿入して縦軸の上の方に移動「(単位:千)」。

7.プロットエリアを左端まで拡張する。

8.縦軸目盛の上限を10000に変更する。

―26― 香川大学経済学部 研究年報 51 2011

Page 27: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

9.目盛間隔を2000にする。

10.補助目盛間隔を1000にして表示する。

11.目盛線を実線に,補助目盛線を破線にする。

12.プロットエリアの背景を明るい色にする。

13.凡例をグラフの右側に表示する。

14.学籍番号,氏名を自分のものに変更する。

図9 Excel の課題2

Microsoft Office課題の自動採点プログラム ―27―

Page 28: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

グラフ

グラフはワークシートの ChartObjectオブジェクトの中の Chartオブジェクトになっている。グラフがひとつであれば最初の ChartObjectの中にある。頻繁に使用するので Chartオブジェクト変数を導入した。

Dim oChart as ObjectSet oChart = oUserSheet.ChartObjects(1).Chart

グラフの種類

Chartオブジェクトの ChartTypeに設定されている。使いそうなものだけを登録した。

2D縦棒グラフ xlColumnClustered3D縦棒グラフ xl3DColumnClustered円柱縦棒グラフ xlCylinderColClustered3-D円グラフ xl3DPie集合縦棒グラフ xlColumnClustered積み上げ縦棒グラフ xlColumnStacked

データ系列数 Chartオブジェクト. SeriesCollection. Countデータ系列名 Chartオブジェクト. SeriesCollection(n). Nameデータ系列範囲

系列名が直接取り出せるので系列範囲もあると考えて探したが見つからず,

Formulaの中に入っている範囲を取り出した。Chartオブジェクト. SeriesCollection(n). Formulaの内容は次のようになっており,括弧の中の3つ目が系列範囲である。

=SERIES(Sheet1!$B$4,Sheet1!$A$5: $A$7,Sheet1!$B$5: $B$7,1)グラフのサイズ Chartオブジェクト. Width Chartオブジェクト. Height単位はポイント

グラフタイトルの確認 Chartオブジェクト. HasTitle

―28― 香川大学経済学部 研究年報 51 2011

Page 29: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

文字タイトルテキスト Chartオブジェクト. ChartTitle. Textフォント名 Chartオブジェクト. ChartTitle. Font. Nameフォントサイズ Chartオブジェクト. ChartTitle. Characters. Font. Size上位置 Chartオブジェクト. ChartTitle. Top太字設定 Chartオブジェクト. ChartTitle. Characters. Font. Bold横軸の確認 Chartオブジェクト. HasAxis(xlCategory)縦軸

表示 Chartオブジェクト. HasAxis(xlValue)上位置 Chartオブジェクト. Axes(xlValue). Top左位置 Chartオブジェクト. Axes(xlValue). Left最小値 Chartオブジェクト. Axes(xlValue). MinimumScale最大値 Chartオブジェクト. Axes(xlValue). MaximumScale目盛間隔 Chartオブジェクト. Axes(xlValue). MajorUnit補助目盛間隔 Chartオブジェクト. Axes(xlValue). MinorUnit目盛線 Chart. Axes(xlValue). HasMajorGridlines目盛線スタイル

Chartオブジェクト. Axes(xlValue). MajorGridlines. Format. Line. DashStyle補助目盛線表示 Chartオブジェクト. Axes(xlValue). HasMinorGridlines補助目盛線スタイル

Chartオブジェクト. Axes(xlValue). MinorGridlines. Format. Line. DashStyle凡例の表示 Chartオブジェクト. HasLegend凡例の上位置 Chartオブジェクト. Legend.Top判例の左位置 Chartオブジェクト. Legend.Leftプロットエリアの背景色 Chartオブジェクト. PlotArea. Format. Fill. ForeColorこの値が vbWhiteなら白または未設定目盛線のスタイルは Line. DashStyleに設定されている。msoLineSolid 実線

msoLineSysDash 点線(角)

msoLineSysDot 点線(丸)

Microsoft Office課題の自動採点プログラム ―29―

Page 30: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

msoLineDash 破線

msoLineDashDot 一点鎖線

msoLineDashDotDot 二点鎖線

msoLineLongDash 長破線

msoLineLongDashDot 長鎖線

msoLineLongDashDotDot 長二点鎖線

� PowerPointの課題

プレゼンテーションに関して学習すべき大事なことは PowerPointの使い方ではないのだが,ここではあえて自動採点できる課題を作ってみた。そのスラ

イドを図10に示す。スライドを作成する過程でプレゼンテーションの仕方も

学習できるように配慮はしたつもりである。

課題はなるべく Office2003と OpenOffice.orgでも作成可能なように作る方針だったが,PowerPointに関しては SmartArtを使ったので Office2007以降でないと作成できなくなった。SmartArtを使うと高品質のスライドが作成できる点を評価した。

PowerPointではひとつのプレゼンテーションファイルが Presentationオブジェクトである。通常のスライドは Slideオブジェクトの集合として管理され,各スライド上の要素は Shapeとして管理されている。Shapeオブジェクトを識別するために課題試作品のすべての Shapeオブジェクトを書き出してみた。それを表1に示す。表1でわかるように Shape. Typeは多くが msoPlaceholderであり,これではその違いを識別しにくい。Shape. Nameの方が内容がわかるが,Office2007で読み出したときと2010で読み出したときの表示が異なっていることがわかる。実は PowerPoint2007と2010で作成したスライドには違いがあり,2010で作成したものには,これ以外に“Content Placeholder”,“SlideNumber Placeholder”という名前が使われていることがわかった。プログラムでは日本語に変換してから使用するようにした。この一覧からわかるように背

景画像は Shapeには含まれていない。PowerPointのプレースホルダーはそれぞれの目的に合わせて使う方がよい。

―30― 香川大学経済学部 研究年報 51 2011

Page 31: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

図10 プレゼンテーションの課題として作成した7枚のスライド

Microsoft Office課題の自動採点プログラム ―31―

Page 32: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Slide番号

Shape番号

Shape.Type Type定数 2007の Shape. Name 2010の Shape. Name

1 1 14 msoPlaceholder タイトル1 Title1

1 2 14 msoPlaceholder サブタイトル2 Subtitle2

1 3 17 msoTextBox テキスト ボックス3 TextBox3

1 4 14 msoPlaceholder スライド番号プレースホルダ5

スライド番号プレースホルダ5

2 1 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

2 2 14 msoPlaceholder タイトル3 Title3

2 3 24 msoIgxGraphic 図表4 Diagram4

3 1 14 msoPlaceholder コンテンツ プレースホルダ1

コンテンツ プレースホルダ1

3 2 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

3 3 14 msoPlaceholder タイトル3 Title3

4 1 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

4 2 14 msoPlaceholder タイトル5 Title5

4 3 24 msoIgxGraphic 図表7 Diagram7

5 1 14 msoPlaceholder コンテンツ プレースホルダ4

コンテンツ プレースホルダ4

5 2 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

5 3 14 msoPlaceholder タイトル3 Title3

6 1 14 msoPlaceholder コンテンツ プレースホルダ1

コンテンツ プレースホルダ1

6 2 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

6 3 14 msoPlaceholder タイトル3 Title3

6 4 3 msoChart グラフ4 Chart4

6 5 17 msoTextBox テキスト ボックス5 TextBox5

7 1 14 msoPlaceholder コンテンツ プレースホルダ1

コンテンツ プレースホルダ1

7 2 14 msoPlaceholder スライド番号プレースホルダ2

スライド番号プレースホルダ2

7 3 14 msoPlaceholder タイトル3 Title3

表1 PowerPoint の Shape オブジェクト

―32― 香川大学経済学部 研究年報 51 2011

Page 33: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

そうしないとその機能を正しく利用できないことがある。たとえばスライドの

タイトルはタイトルプレースホルダーに書くべきで,そうすることにより,

PowerPointはそれをタイトルとして認識する。コンテンツプレースホルダーは標準のプレースホルダーで,主要なコンテン

ツをここに置くことができる。文字の書式が設定されているので,文字データ

を入力するのによい場所である。

PowerPoint ファイルのOpen

Dim aPPT as Object

Dim oPPT as Object

Set aPPT = CreateObject(“PowerPoint.Application”)

aPPT.Visible = True

Set oPPT = aPPT.Presentations.Open(filename : =strPPTFileName, _

ReadOnly : =True)

oPPTをMicrosoftは Presentationオブジェクトと呼んでいるが,長いのでここでは oPPTのままで使う。PowerPointは非表示で Openすることができないので aPPT.Visibleは Trueにしておかなければならない。

PowerPoint ファイルのClose

普通にオプションなしで Closeして問題は起きていない。

oPPT.Close

aPPT.Quit

スライドの数 oPPT. Slides. Countテンプレート名 oPPT. TemplateName各スライドは表示順にインデックスが付いている。以下は1枚のスライドに

ついての情報である。

スライドの要素数 Slideオブジェクト. Shapes. Count

Microsoft Office課題の自動採点プログラム ―33―

Page 34: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

スライドタイトル

タイトルプレースホルダーオブジェクト. TextFrame. TextRange. Textスライドサブタイトル

サブタイトルオブジェクト. TextFrame. TextRange. Textスライド番号

スライド番号プレースホルダーオブジェクト. TextFrame. TextRange. Text背景の画像

Slideオブジェクト. Background. Fill. Typeが msoFillPictureならば設定されている。

箇条書き

項目数 Shapeオブジェクト. TextFrame. TextRange. Paragraphs. Countテキスト Shapeオブジェクト. TextFrame. TextRange. Paragraphs(i). Textiは箇条書きを含む Shapeオブジェクトの i番目の Paragraphを表す。

グラフ(PowerPointで作成されたグラフ)独立した Shapeになっている場合と,コンテンツプレースホルダーの中にあ

る場合がある。

Shapeの場合 Shapeオブジェクト. HasChartコンテンツプレースホルダーの場合

コンテンツプレースホルダーの HasChartプロパティで判定する。グラフの種類 Chartオブジェクト. ChartTypeグラフのタイトル Chartオブジェクト. ChartTitle. Text

SmartArt

SmartArtは VBAではグループ化されたオブジェクトとして見えるが,多くはわからなかった。PowerPoint2007以降はマクロの記録が取れないのでWordの中で作成してみたが,その部分の記録は残らない。今のところ SmartArtであるかどうかの確認と,その内部のテキストを取り出すことだけができている。

―34― 香川大学経済学部 研究年報 51 2011

Page 35: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

SmartArtの確認独立した Shapeになっている場合と,コンテンツプレースホルダーの中にある

場合がある。Shapeオブジェクト. Type,または Shapeオブジェクト. PlaceholderFormat. ContainedTypeが msoSmartArtであるかどうかで判定する。グループ化されている要素数

Shapeオブジェクト. GroupItems. CountSmartArt内のテキストShapeオブジェクト. GroupItems(i). TextFrame. TextRange. Text

iは GroupItemsのインデックス

SmartArt の起動に時間がかかる

テストを繰り返しているうちに SmartArtのテキスト抽出が不安定であることがわかった。調べるとファイルオープン直後は GroupItems. Countがゼロになっている場合があった。とりあえず次のプログラムで,すべての SmartArtの GroupItems. Countが正になるまで待つことにした。

Private Sub ActivateSmartArt()

Dim i As Long

Dim j As Long

Dim bSmartArt As Boolean

For i=1 To oPPT.slides.Count

With oPPT.slides(i)

For j = 1 To .Shapes.Count

bSmartArt = False

If .Shapes(j).Type = msoSmartArt Then

bSmartArt = True

ElseIf .Shapes(j).Type = msoPlaceholder Then

If .Shapes(j).PlaceholderFormat.ContainedType = _

msoSmartArt Then

bSmartArt = True

End If

Microsoft Office課題の自動採点プログラム ―35―

Page 36: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Sleepは kernel32のライブラリーを使うので次の宣言文が必要である。Private Declare Sub Sleep Lib“kernel32”(ByVal dwMilliseconds As Long)

� 総 合 課 題

総合課題はWord文書の中に Excelで作成したグラフを埋め込む課題である。その見本を図11に示す。この課題は最後に修正指示がある。図11はその

修正前の状態である。

総合課題の指示文

1.A4判用紙を縦長に使う。2.上下左右の余白を25mmにする。3.1ページの文字数と行数は設定せず,それぞれのスタイルや段落で設定す

る。

4.組み込みスタイルの「標準」を次のように設定する。

�日本語用フォント MS 明朝

�英数字用フォント Century Schoolbook�文字サイズ 10pt�行間隔の行間 最小値

End If

If bSmartArt Then

Do Until .Shapes(j).GroupItems.Count>0

Sleep(100)

DoEvents

Loop

End If

Next j

End With

Next i

End Sub

―36― 香川大学経済学部 研究年報 51 2011

Page 37: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

図11 総合課題

Microsoft Office課題の自動採点プログラム ―37―

Page 38: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

�行間隔の間隔 18pt5.日付を右揃えにする。

6.学籍番号氏名の学籍番号と氏名を自分のものに変更し,その行を右揃えに

する。

7.「シニアのネット利用が増加」をタイトルとし,組み込みスタイルの「表

題」に設定する。

8.表題のスタイルを次のように設定する。

�スタイルのフォント MS Pゴシック�スタイルのフォントサイズ 16pt�スタイルのフォントスタイル 標準

�スタイルの行揃え 中央揃え

9.参考文献の項目を次のように設定する。

1行目のインデントを0字に,2行目以降のインデントを1字にする。

(1行目と2行目でひとつの段落を構成する)

10.Excelのワークシート「年齢別利用率. xlsx」をダウンロードして,見本のような「棒グラフ」を作成し,それをWord文書に埋め込む。グラフへの指示は次のとおり。

�グラフのサイズは標準のセルサイズで約横7×縦18�グラフタイトルを「年齢別インターネット利用率の変化」としてグラフ上部(上から10pt付近)に表示する。

�グラフタイトルのフォントをMS Pゴシック,14ptにする。太字になっていたら解除する。

�縦軸目盛の最大値を100に,最小値を0に,間隔を20に,横目盛線を非表示にする。

�縦軸ラベルを「(%)」(すべて全角文字)とし,縦軸の上部に表示する。�凡例をグラフエリア内の上から50pt付近に表示する。�データラベルを表示する。並べて表示すると数字が重なるので,系列1を内側上,系列2を外側上に表示する。

�データラベルの数値を見やすくするために,グラフ要素の間隔を50%

―38― 香川大学経済学部 研究年報 51 2011

Page 39: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

にする。

�棒グラフの色をデータラベルが見やすいように変更する。�周囲の枠線を非表示にする。

11.グラフをWordの文書ファイルに埋め込む。貼り付ける際にMicrosoft Officeオブジェクトとして貼り付ける。図と

して貼り付けると見た目は同じでも内部構造が異なるため採点プログラム

で正しく認識されません。

12.Word文書内に貼り付けた後,次のように設定する。�行内図形として中央揃えに配置する。�Excelのフォント設定が変わっている場合は再設定する。

13.ここまで行うと見本のようになるが,それに次の修正を行う。

�「理容率」をすべて「利用率」に置き換える。�「9462」をすべて「9,462」(カンマは半角記号)に置き換える。�『6歳以上の人口に占める割合は78.2%になった。』を,『6歳以上の人口に占める割合は対前年比0.2ポイント増の78.2%になった。』に修正

する。

総合問題では埋め込まれた Excelのグラフの扱い方を説明する。Wordに埋め込まれた Excelのグラフの設定情報を取得するためには,埋め込

むときに「Microsoft Officeオブジェクト」として貼り付けておく必要がある。Wordに埋め込まれたグラフは Inlineshapeまたは Shapeオブジェクトにな

る。この課題ではほぼページ幅いっぱいに表示させるので Inlineshapeとして埋め込まれているものとしてしている。グラフがなかったり,あるいは複数

あったりするとややこしくなるので最初にそれを確認している。

objDoc. Inlineshapes. Countにより,行内要素がひとつだけあることを確認する。次に objDoc. Inlineshapes(1). HasChartにより,その要素がグラフであることを確認する。

Microsoft Office課題の自動採点プログラム ―39―

Page 40: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

Set oChart = objDoc. Inlineshapes(1). Chartここまで設定できれば,Excelのグラフと同様に扱える。

注意すべき点

ExcelのグラフをWordに埋め込むとフォントの管理がWordによって行われるらしく,フォント設定が変わってしまうことがある。そうなったときは

Wordで再設定する。グラフによることであるが,ここではグラフ要素の間隔を指定している。単

位はパーセントである。

グラフ要素の間隔 Chartオブジェクト. ChartGroups(1). GapWidth

� 一 括 採 点

オリジナルのMoodleには課題を一括してダウンロードする機能がないので,三重大学版Moodle[4]に組み込まれている課題一括ダウンロード機能を利用している。これを使うと全課題が次の構造を持つ一つのフォルダーに集め

られる。

課題フォルダー名/ユーザー名/課題ファイル名

教師用の採点プログラムには「一括採点」のボタンを追加して,これにより,

課題フォルダーを選んで処理するようにした。一つのファイルの結果は一枚の

シートに出力し,最後にサマリーとしてユーザーごとの正解の数を一覧にした

シートを付けた。高速化のためにスクリーンの更新を抑制したとき,進行状況

をステータスバーに表示するようにした(図12)。

図12 一括採点中のステータスバー

―40― 香川大学経済学部 研究年報 51 2011

Page 41: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

全表示 課題非表示 画面非更新

Word課題1 1.92 0.89 0.75

Word課題2 2.58 1.27 1.15

Excel課題1 0.23 0.24 0.11

Excel課題2 0.24 0.25 0.12

PowerPoint課題 1.27 - 1.15

総合課題 1.37 0.78 0.68

表2 1ファイルあたりの処理時間(秒)

処理時間を測定したが,結構ばらつきがでるので目安程度と考えてもらいた

い(表2)。測定に使用した環境は,CPU Intel Core i5-2405S,クロック2.5GHz,RAM8GB,OS Windows7Professional64bit,Office2007である。表2における全表示は課題ファイルと採点結果ワークシートの更新状況をそのまま表示す

る設定,課題非表示はWord,Excelの課題ファイルを表示しない設定,画面非更新は画面更新を一切しない(ステータスバーだけが更新される)設定であ

る。PowerPointは非表示にすると採点できないのでそこは空欄になっている。

これによれば Excelの採点に比べてWord,PowerPointの採点に時間がかかること,Wordを非表示にする効果が大きいことがわかる。採点するファイル数が多くなると,結果を出力するワークシートの数が多く

なり,処理時間の増加が心配だったのでファイル数を100にしてテストした。

懸念したとおり,1ファイルあたりの処理時間が増加した。ところが,1項目

処理ごとに DoEventsを挿入したところ,ファイル数を100まで増やしても処理時間は増えなくなった。Windowsのタイムスライスが大きすぎるのか,VBAが無駄に CPUをつかんで離さないのかわからないが,これ以上の調査はしていない。表2の処理時間は DoEventsを組み込んだプログラムで測定したものである。

Microsoft Office課題の自動採点プログラム ―41―

Page 42: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

� む す び

Microsoft OfficeのWord,Excel,PowerPointの課題を自動採点するプログラムを作成し,その概要を説明した。作成した動機は採点の手間を軽減すること

であるが,本来の目的は教育の手間を軽減することではなく,教育効果を高め

ることである。まずその効果があったのかどうかを検証する。

全学生が満点を取った

厳密にいうと最後の総合課題は全員満点ではなかったが,これは私語を禁止

した試験形式で,時間を定めて行ったものなので除外している。つまり,Word2問,Excel2問,PowerPoint1問の5課題については全員が満点になった。もし,これを自動採点ではなく,教師が採点し,その結果を学生に通知し,再提

出,再採点という手順でやっていたらこうは行かなかったであろう。この授業

は90分授業を15回行うことになっているが,夜間の授業であり,1日に2コ

マ実施している。したがってひとつ課題を出して,来週までにやっておきなさ

いといつも言えるわけではない。そういう中で全員が満点を取ってくれたのだ

からその点は効果があったと言える。

採点する教師の手間は軽減された

採点の手間は劇的に軽減された。一番時間のかかる処理はWordの課題2であったが,50人分の採点が数分で終了する。

アプリケーションプログラムの機能をより正確に理解できる。

見た目で判断していると見過ごしてしまいそうな部分でも,プログラムが

きっちりと判定するので間違いを検出できる。

注意力の試験ではなくなった

作成した課題でもそうだが,指示の数はかなり多い。ややもすると注意力を

試すような問題になりかねない。不注意による間違いはプログラムが検出して

くれるのでその労力は軽減される。その分,出題する方も気楽に出題できる。

一方,マイナス面としてはつぎのようなことがある。

課題内容に制限

自動採点できそうもないような課題は最初から排除している。たとえばテー

―42― 香川大学経済学部 研究年報 51 2011

Page 43: MicrosoftOffice課題の自動採点プログラムshark.lib.kagawa-u.ac.jp/kuir/file/27706/20150809142518/...を作ってしまったのでそれが不可能になった。現状はWord

マを決めてそれに沿った内容の作品を自由に作成させるような課題を自動採点

するのは難しい。学生の想像力,思考力を刺激するような課題を出題できない。

指示が細かくなる

プログラムで判定することを考えると,アプリケーションのどの機能をどの

ように使うかを詳細に指定しなければと考えてしまいがちである。結果とし

て,特定のアプリケーションの操作方法だけの学習になってしまう可能性があ

る。

自動採点を導入したことについての学生の反応は悪くはなかったように思

う。最初はプログラムの欠陥,学生の想定外の操作,Officeの予想外の動作などのために,途中でプログラムが停止してしまうことが何度かあったが,原因

の解明には学生が積極的に協力してくれた。おそらく学生としては,提出する

前に何度でもプログラムで確認できるのは都合がよかったものと考えられる。

学生による授業評価の結果はよかった。

以上,VBAによる自動採点プログラムの概要を紹介した。プログラムの実行時間をみるとまだ余裕があるので,より「賢い」プログラムに改良する余地

は大いにあると考えられる。機会があれば取り組んでみたい。

参考文献[1]Moodle,http://moodle.org/

[2]Office2007入門セット(Word / Excel / PowerPoint),日本データパシフィック株式会社,

http://www.datapacific.co.jp/

[3]岩田員典,功刀由紀子,齋藤毅,谷口正明,長谷部勝也,松井吉光,古川邦之,

「Excel,Word自動採点システム HITsの構築と運用」,COM(愛知大学情報メディアセン

ター),20,11-23,2010

[4]三重大学版Moodleソース,http://oku.edu.mie-u.ac.jp/miemoodle/

Microsoft Office課題の自動採点プログラム ―43―