就実論叢 第45号 2015 pp.353-366 教務データの処理におけるエクセルVBAの応用 Applications of Excel VBA in data processing of educational affairs 就実大学薬学部 増 加 齋 片 田 藤 藤 岡 和 久 啓 洋 文



Similar documents
就実論叢 第46号 2016 pp 教務データの処理におけるエクセル VBA の応用 第2報 Applications of Excel VBA in data processing of educational affairs, Part 2 増 田 和 文 就実大学薬学部 加 藤

<4D F736F F D208DEC90AC837D836A B81698F4390B394C5816A2E646F63>

ExcelVBA

Microsoft Word - 教科書VBA_第1章2013_.doc

Microsoft Word _VBAProg1.docx

PowerPoint プレゼンテーション

情報基礎A

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション

年齢別人数計算ツールマニュアル

マクロの実行許可設定をする方法 Excel2010 で 2010 でマクロを有効にする方法について説明します 参考 URL:

研究者情報データベース

PowerPoint プレゼンテーション

Microsoft PowerPoint - VBA解説1.ppt [互換モード]

第 1 章 VBA について 1 イントロダクション 校務で生徒や先生方のデータの集計など,Excel を使用することが多くなっています 日常,Excel で作業をしていると 同じ操作 を繰り返し行わなければいけないことが多くありませんか? この 同じ操作 を VBA を利用し, より業務を効率化さ

1

医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート - 目 次 - < 第 1 章 > 共 通 事 項 説 明 医 療 費 自 己 負 担 額 支 払 明 細 書 入 力 シート 目 次 1.1 本 システムの 注 意 点 入 力 項 目 について 基 本 情

計算式の取り扱い

PowerPoint プレゼンテーション

(Microsoft Word - Excel\211\236\227p7\217\315.docx)

動的串刺し計算のコツ

1. 入力画面

untitled

Microsoft PowerPoint - kakeibo-shiryo1.pptx

(Microsoft Word - Excel\211\236\227p2\217\315.docx)

45 VBA Fortran, Pascal, C Windows OS Excel VBA Visual Basic Excel VBA VBA Visual Basic For Application Microsoft Office Office Excel VBA VBA Excel Acc

<4D F736F F D C97F195CF8AB DEC90E096BE8F912091E6312E313294C52E646F63>

目 次 1. 論 理 関 数 IF IF の 概 要 論 理 式 の 種 類 等 号 不 等 号 具 体 的 な 使 い 方 ネスト 複 数 の 条 件 を 記 述...

PowerPoint プレゼンテーション

プレポスト【問題】

返還同意書作成支援 操作説明書

各種パスワードについて マイナンバー管理票では 3 種のパスワードを使用します (1) 読み取りパスワード Excel 機能の読み取りパスワードです 任意に設定可能です (2) 管理者パスワード マイナンバー管理表 の管理者のパスワードです 管理者パスワード はパスワードの流出を防ぐ目的で この操作

コンピュータ概論

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 15ページに 汎 用 データ 受 入 に 関 する よくあるお 問 い 合 わせをご 紹 介 しています Step1 (

Microsoft PowerPoint - KeySQL50_10g_vlo3.ppt

以 下 に 手 順 の 流 れを 記 載 します 3ページ 以 降 で 各 項 目 の 手 順 を 説 明 します ( をクリックすると 該 当 ページにジャンプします ) また 4ページに 汎 用 データ 受 入 に 関 するよくあるお 問 い 合 わせをご 紹 介 しています Step (3ペー

Microsoft Word - VBA基礎(3).docx

Excel2013 マクロ

縦 計 横 計 をSUM 関 数 で 一 度 に 計 算 する 縦 横 の 合 計 を 表 示 するセルが 計 算 対 象 となる セルと 隣 接 している 場 合 は 一 度 に 合 計 を 求 め ることができます 1 計 算 対 象 となるセル 範 囲 と 合 計 を 表 示 する セル 範

2.2 文 がセルの 行 の 高 さの 限 界 値 を 超 えた 場 合 の 処 理 本 アドインは 文 がセルの 行 の 高 さの 限 界 値 (409.5 ポイント)を 超 えている 場 合 に 行 を 追 加 し 自 動 調 整 する 機 能 を 備 えています 文 がセルの 行 の 高 さの

一 括 登 録 方 法 一 括 登 録 をするには 予 め 専 用 の CSV ファイルを 作 成 する 必 要 があります 普 段 エクセルファイルで 管 理 をされている 方 は, 以 下 の 3 列 のみのデータとなるようにデータを 加 工 して CSV ファイルとして 保 存 して 下 さ

入 札 参 加 資 格 申 請 システム 操 作 マニュアル 入 札 参 加 資 格 の 資 格 有 効 ( 変 更 ) 日 を 迎 えると 追 加 届 の 登 録 ができるようになります ( 入 札 参 加 資 格 申 請 の 定 時 受 付 では いずれかの 申 請 先 団 体 から 入 札 参

Microsoft Word - 第3章.doc

目 次 1. 積 算 内 訳 書 に 関 する 留 意 事 項 1 ページ 2. 積 算 内 訳 書 のダウンロード 3 ページ 3. 積 算 内 訳 書 の 作 成 (Excel 2003の 場 合 ) 6 ページ 4. 積 算 内 訳 書 の 作 成 (Excel 2007の 場 合 ) 13

目 次 1 インストール 手 順 プログラム データファイルのインストール Microsoft Access2013Runtime SP1(32bit) 版 のインストール 基 本 操 作 ログイン メニュー...

(Microsoft Word - Excel\216\300\217K\212\356\221b1.doc)

目 次 遺 失 物 管 理 プログラム 利 用 者 マニュアル 1. 動 作 条 件 遺 失 物 管 理 プログラムのインストール 運 用 の 流 れ 起 動 方 法 操 作 方 法 について 基 本 的 な 操

<4D F736F F D20819B93FC97CD CC91808DEC95FB FC92F994C5816A>

[Excelが自動化するVBAの魔法2]購入者限定テキスト

6.1 工 程 管 理 (ネットワーク 工 程 表 ) 159 VBA( 実 行 結 果 例 ) 出 力 結 果 シート 出 力 結 果 を 図 に 描 くと 下 図 のようになる. 図 6.3 ネットワーク 工 程 表 ( 出 力 結 果 より 作 図 )

OTRS10 他社システムOTRS呼出利用手順書

別冊資料-11

Microsoft PowerPoint - c3_op-manual.pdf

プログラミング演習

2016 年 度 情 報 リテラシー 三 科 目 合 計 の 算 出 関 数 を 用 いて 各 教 科 の 平 均 点 と 最 高 点 を 求 めることにする この2つの 計 算 は [ホーム]タブのコマ ンドにも 用 意 されているが 今 回 は 関 数 として 作 成 する まず 表 に 三 科

プログラミング演習

01_07_01 データのインポート_エクスポート_1

Microsoft Word - VBA基礎(1).docx

ピボットテーブルによるデータ 分 析 EXCELのリスト(シート 上 の 表 形 式 のデータ)から 縦 横 の 項 目 を 設 定 して 新 しい 表 ( 集 計 表 )を 作 ることができます この 表 を ピボットテーブル と 呼 びますが 集 計 を 自 動 で 行 う ことができるので 学

(Microsoft Word - \215u\213`\203m\201[\203g doc)

Microsoft Word - 操作マニュアル(石油コンビナート_オフラインソフト編)_v0.2.doc

<4D F736F F D208A7790B682C982E682E98EF68BC6955D89BF82CC8F578C76955C8DEC90AC835C CC8A4A94AD F95B6816A>

MS-ExcelVBA 基礎 (Visual Basic for Application)

Basic

(Microsoft Word - \203G\203N\203V\201[\203h.docx)

Module1 には 損 益 入 力 シートのデータに 関 連 するマクロが 格 納 されている( 表 1) 以 下 に Module1 を 構 成 するマクロを 掲 載 する 表 1 Module1 の 構 成 Module 設 置 されたシート 名 登 録 されたマクロ 作 業 内 容 データの

情報処理実習(工基3)

目 次 1. ログイン/ログアウト 1.1 ログインする p ログアウトする p.3 2. 受 講 一 覧 画 面 p.4 3. 授 業 ページの 閲 覧 3.1 授 業 ページへの 遷 移 p 授 業 資 料 を IT s class.からダウンロードする p

1. 表 から 値 を 抽 出 する 説 明 1.1. 表 から 値 を 抽 出 するための 関 数 について 説 明 します LOOKUP VLOOKUP HLOOKUP 関 数 は 検 索 値 に 対 応 する 値 を 検 索 値 を 含 む 一 覧 表 から 抽 出 し てくれる 関 数 です

目 次 1. 化 学 研 究 所 研 究 者 データベースについて 研 究 者 情 報 データベース 登 録 システムログイン 画 面 メニュー 画 面 パスワードの 変 更 公 開 時 の 表 示 / 非 表 示 の 設 定.

(Microsoft Word - Word\216\300\217K\212\356\221b1.doc)

文科省様式3-2集計オプションマニュアル

年齢別人数計算ツールマニュアル

2016 年 度 情 報 リテラシー 変 更 された 状 態 同 様 に 価 格 のセルを 書 式 設 定 する 場 合 は 金 額 のセルをすべて 選 択 し [ 書 式 ]のプルダウンメニューか ら[ 会 計 ]を 選 択 する すると が 追 加 され 金 額 としての 書 式 が 設 定 さ

Section1_入力用テンプレートの作成

本サンプル問題の著作権は日本商工会議所に帰属します また 本サンプル問題の無断転載 無断営利利用を厳禁します 本サンプル問題の内容や解答等に関するお問 い合わせは 受け付けておりませんので ご了承ください 日商プログラミング検定 STANDARD(VBA) サンプル問題 知識科目 第 1 問 ( 知

ボタンをクリックします ( 警 告 が 表 示 されない 場 合 もあります ) 9 画 面 に Win SFX32M V と 表 示 されますので 保 存 する 箇 所 を 選 択 し OK をクリックしてください 選 択 した 箇 所 にインストールしたフォルダが 保 存 され

<4D F736F F D E322E33816A91E58BB3554E F B582BD8DCC935F936F985E837D836A B2E646F6378>

6 システムを 入 れているパソコンを 入 れ 替 えたいが どうしたらいいのか 元 のパソコンから 新 しいパソコンに 昨 年 度 入 力 データを 移 行 します 手 順 は 次 のとおりです 1 元 のパソコンでシステムを 起 動 して メニュー 画 面 から バックアップ リカバリ を 選

WinXPBook.indb

5 振 込 依 頼 書 の 作 成 方 法 ()ツールの 起 動 コピーまたはダウンロードしたツールをダブルクリックして 開 いてください (ツール 起 動 の 際 マクロを 有 効 にしてください ) ダブルクリック 後 以 下 のメッセージが 出 力 されますので 読 み 取 り 専 用 ボタン

EXCEL VBA講座

ギリシャ文字の読み方を教えてください

エクセルの基礎を学びながら、金額を入力すると自動的に計算され、1年分の集計も表示される「おこづかい帳」を作りしょう

1.3. アドインボタンの 場 所 2007 / 2010 / 2013 / 2016 の 各 バージョンのアプリケーションにおいては アドインボタン はリボン 名 アンテナハウス に 登 録 されます アドインボタンの 表 示 状 態 (Word 2010 の 例 ) アドインボタンの 表 示 状

V-CUBE One

情報資源組織演習B:

2 / 16 ページ 第 7 講データ処理 ブック ( ファイル ) を開く第 6 講で保存したブック internet.xlsx を開きましょう 1. [Office ボタン ] から [ 開く ] をクリックします 2. [ ファイルの場所 ] がデータを保存している場所になっている

PowerPoint プレゼンテーション

Microsoft Word - 03accessデータベース演習レジメ.doc

第 4 部 数 値 表 現 による 思 考 表 1 関 数 関 数 名 称 表 記 意 味 合 計 =SUM(A2:A10) A2 から A10 までの 合 計 平 均 =AVERAGE(A2:A10) A2 から A10 までの 平 均 最 大 値 =MAX(A2:A10) A2 から A10 ま

12_02_02 帳票設定5


岡三RSS 新機能・変更点

~ 目 次 ~ 1. 履 修 登 録 のながれ 1 2. 利 用 可 能 な 機 能 について 2 3.Web 履 修 登 録 画 面 へのログイン ログアウト 方 法 3 4. 予 備 登 録 ( 定 員 設 定 科 目 の 履 修 ) (1) 予 備 登 録 5 (2) 予 備 登 録 状 況

2 課 題 管 理 ( 科 学 研 究 費 補 助 金 ) 画 面 が 表 示 されます 補 助 事 業 期 間 終 了 後 欄 の[ 入 力 ] をクリックします [ 入 力 ]ボタンが 表 示 されていない 場 合 には 所 属 する 研 究 機 関 の 事 務 局 等 へお 問 い 合 わせく


sinfI2005_VBA.doc

Excel basics

INDEX 2~. はじめに 5~. レポート 作 成 方 法 ~ 担 当 営 業 マン 別 ログイン 回 数 一 覧 ~ 14~. レポート 作 成 方 法 ~ログイン 無 しユーザー 一 覧 ~ 1

Transcription:

就実論叢 第45号 抜刷 就実大学 就実短期大学 2016年2月29日 発行 教務データの処理におけるエクセル VBA の応用 Applications of Excel VBA in data processing of educational affairs 増 田 和 文 加 藤 久 登 齋 藤 啓 太 片 岡 洋 行

就実論叢 第45号 2015 pp.353-366 教務データの処理におけるエクセルVBAの応用 Applications of Excel VBA in data processing of educational affairs 就実大学薬学部 増 加 齋 片 田 藤 藤 岡 和 久 啓 洋 文 登 太 行 1 はじめに 学生は 授業を履修 単位を修得し 進級そして卒業する 履修要覧には 進級要件が明 記されており この要件を満たさなければ留年となってしまう 留年などを未然に防ぐため にも学生の単位修得状況を正確に把握し 早期に適切な指導や対応をすることは 教務上極 めて重要である 就実大学では 後期開始前 教育懇談会前 に学生の成績表が 担任に学 生指導の資料として配布される この成績表には 大きく3つの項目 総合教養教育科目 外国語教養科目 専門教育科目に別れて各授業科目名 単位数 評価 履修の年度が記載さ れている 表1 つまり この成績表は学生の履修状況とその成績がわかる履歴であって 薬学部の履修要覧にある各科目分類 各学年の進級要件 表2 を満たしているのかどうか すぐにはわかりにくいのが現状である そこで薬学部では エクセル Excel VBA を利用して学生ごとの単位修得状況がわかる 正確な一覧表を作成し 学生指導に用いているので その具体的方法について述べる 2 エクセル VBA とは VB とは Microsoft 社が開発 販売しているプログラミング言語 Visual Basic の略であり この VB をベースとして Word や Excel などのアプリケーションソフトウェアで使用する マクロ言語が Visual Basic for Applications VBA である エクセルの数式バーにも一行 の簡単な処理を記述することができるが マクロ言語の方がはるかに複雑な処理を記述する ことができる また VB, VBA は Windows 用に開発されたイベントドリブン 起こったイ ベントに応じて処理を行う 対応の言語である VB, VBA と PC-8800 PC-9800に搭載され ていた N88-BASIC とで関数等 共通点は多いものの VB, VBA にはオブジェクト プロ パティ メソッド等の新しい概念が導入されており その点において N88-BASIC との互換 性は低い なお VB, VBA も N88-BASIC も基本的に逐次解釈して実行するインタプリタ 型であり 一般に処理速度はあまり速くない 353

増田和文 加藤久登 他 表1 学生の成績表 1 表2 進級 卒業時における必要単位数 2 3 エクセル VBA の基礎 3.1 エクセル VBA を利用可能にする エクセルをインストール後何もしていなければ VBA は作成 編集できる状態になって いない Microsoft Excel 2010の場合 以下の操作によりリボン Microsoft Office 2007から 採用されたグラフィカルユーザインタフェース GUI にタブ 開発 が表示される 1 ファイル タブをクリック 2 Options をクリック 3 リボンのユーザー設定 をクリック 4 ウィンドウ右側の リボンのユーザー設定 メイン タブ の下の 開発 チェックボッ クスをオンにして OK をクリック 354

教務データの処理におけるエクセルVBAの応用 3.2 マクロプログラムを作成 編集する マクロプログラムを作成 編集するときは Excel とは別の VBE という画面を使い 編 集内容は エクセルブックごとに保存される VBE とマクロプログラム編集画面の起動 図 1 は 以下の手順により行う 1 開発 タブを選択後 リボンの右端にある Visual Basic をクリックまたは Alt F11 で Visual Basic Editor VBE が起動する 2 挿入 メニューの 標準モジュール をクリック 図1 起動された Visual Basic Editor VBE 3.3 マクロプログラムを実行する メニューの 実行 R のサブメニュー Sub/ ユーザーフォームの実行 F5 を選択する とマクロプログラムが実行される 355

増田和文 加藤久登 他 4 教務データの処理 4.1 単位修得状況が一目でわかる表 シート の設計 例として2年生の物理系薬学の表を示す 表3 縦 行 方向に学生を 横 列 方向 に授業科目名 包括認定を含む を配置している 左端に 担任 を記入し 修得単位数 不足単位数 では 自動計算できるよう数式を入力している 表2の1つの科目分類につ き1 6年生のシートを作ることになる 4.2 教務課から提供されるデータ 教務データには 以下の項目が列方向に記載されている なお 各項目は必ずしもこの順 に並んでいるわけではないが 自動判別されるので並べ替える必要はない 1 学年 学年毎に並んでいること 2 学則成績 学籍番号 入力データにはハイフンが入っていないこと 3 氏名 姓 4 氏名 名 5 学則科目コード 未使用 6 学則科目名称 上記4.1に入力されている科目名は この名称と同一であること 7 単位数 8 評価名称 学内 9 成績確定年度 10 素点 未使用 11 講義開講時期名称 前期 後期 通年 4.3 データ処理の手順 本文末に実際に使用しているプログラムを付している マクロ言語の詳細な文法は 参考 文献3 6 等に譲るとして 何の処理をしているのかわかるようコメント ' 改行 はプログラムとはみなされない を付けている 以下にプログラムを概説する 1 教務データのファイル名を取得 Application.GetOpenFilename メソッドにより 教務課から提供されたファイル名を 取得する ここではエクセル関連のファイルを想定しているため *.xls, *xlsx, *.csv のみ が表示されるよう FileFilter を設定している パスを含むファイル名が変数 readfile に 格納される 2 教務データのファイルを Open し シート内にコピーしたのち Close する Workbooks.Open メソッドにより ファイルをオープンした後 これを一旦エクセルシー ト内にコピーする 次いで シート名を ALL_DATA に変更し Workbooks.Close メソッ ドによりファイルを閉じる なお ファイルを閉じるときのファイル名はパスを含めない 356

357 このうち2年から3年への進級には9単位 3年から4年への進級には11単位必要である 物理系薬学 旧コアカリ では 化学平衡 1年前期 2単位 化学物質の検出と定量 1年後期 2単位 等7科目 計13単位あり 表3 プログラムにより作成された成績一覧表 2年生 旧コアカリ の物理系薬学 教務データの処理におけるエクセルVBAの応用

増 田 和 文, 加 藤 久 登 他 3) 教 務 データ 各 項 目 の 列 番 号 を 調 べる 教 務 から 提 供 されるデータの 各 項 目 は 必 ずしも 一 定 の 並 びではないため 何 番 目 の 列 に 各 項 目 があるかを 調 べる 必 要 がある 教 務 システムで 用 いられる6つの 語 学 年 ( 学 則 成 績 ) 学 籍 番 号 学 則 科 目 名 称 評 価 名 称 ( 学 内 ) 単 位 数 講 義 開 講 時 期 名 称 を 探 し 見 つからなければデータ 処 理 続 行 が 不 可 能 であるためエラーメッセージを 出 力 し てプログラムを 終 了 する 4) 教 務 データのシートは 何 行 列 あるか? 処 理 速 度 を 上 げるため 一 旦 シート 内 にコピーしたデータを 配 列 変 数 にコピーするため データの 行 数 列 数 を 調 べる データは 学 生 の 履 修 単 位 修 得 の 全 履 歴 であるため 全 行 数 は 決 まった 値 とはならず 年 によって 異 なるが 全 行 数 は 約 5 6 万 行 である なお ここでは Do While Loop を 用 いているが End プロパティにより r= Range("A1" ).End(xlToRight).Column i= Range("A1" ).End(xlDown).Row と 記 述 しても 同 じ 結 果 が 得 られる 5) 教 務 データを 配 列 変 数 へコピー 後 ワークシート ALL_DATA を 削 除 ワークシート 上 のセルへの 直 接 アクセスは 遅 いため アクセスの 速 い 配 列 変 数 にコピー して 処 理 を 行 う 以 後 ワークシート ALL_DATA は 必 要 ないので 強 制 削 除 する 6) 教 務 データのうち 各 学 年 は 何 行 から 何 行 までか? 教 務 データは 1 年 生 から6 年 生 まで 学 年 ごとに 並 んでいるため サーチする 範 囲 を 参 照 するテーブルを 作 っておく 7) 学 年 ごとのシートを 順 次 処 理 する 行 に 学 生 名 簿 を 列 に 授 業 科 目 名 を 配 したシート( 表 3)を1 番 目 から 順 に 処 理 してい く まず シートに 記 入 されている 学 年 を 判 断 し 上 記 6)で 作 成 したテーブルのその 学 年 部 分 を 参 照 して その 行 範 囲 のみをサーチする 学 籍 番 号 が 教 務 データと 一 致 したなら ば 1 番 目 の 授 業 科 目 名 があるかどうかを 調 べる 教 務 データは 学 生 の 履 修 の 全 履 歴 で あるため 評 価 が S A B C F のいずれかであれば セルにその 単 位 数 を 入 力 してそのループを 終 了 する また 授 業 科 目 名 はあるが 上 記 以 外 の 評 価 が 見 つからな ければ 不 合 格 として 単 位 数 0を 入 力 し 履 修 中 であれば 履 ( 前 ) 履 ( 後 ) または 履 ( 通 ) を 入 力 する 授 業 科 目 名 がなければ 履 修 の 履 歴 がないとして を 入 力 する これと 同 様 の 処 理 を2 番 目 以 降 の 授 業 科 目 名 についても 行 い その 学 年 の 学 生 全 員 につ いて 終 了 すれば 次 のシート( 次 の 学 年 )に 移 る 358

教務データの処理におけるエクセルVBAの応用 5 結果 5.1 処理速度について VBA は 基本的にインタプリタ型であり 処理速度は速くない できるだけ処理を高速 化するために 以下の点を工夫しその効果を検証した 1 教務データを配列変数にコピー エクセル VBA において処理毎にセルへアクセスすると 処理が極端に遅くなるため 最初に教務データを配列変数にコピーする コピー自体に時間を要するが この処理を一 度行えば あとは配列変数への速いアクセスが可能であり 高速化が期待できる また現 在 セルへの出力は処理毎に行われているが これを一旦配列変数に格納しておき 一気 に出力すれば さらに高速化することが可能と考えられる 2 データ範囲のテーブル化 データ処理は 学年毎に行われるため 教務データのその学年部分のみを参照するのが 効率的である そのために 教務データの各学年は何行から何行までかを格納した配列変 数を作成し 対象学年の行範囲でループを回すこととした 例えば2015年度前期終了時点 では 教務データの全行数は58,744行あり 内訳は1年生3,469行 2年生7,984行 3年 生12,476行 4 年 生10,689行 5 年 生10,074行 6 年 生14,045行 で あ っ た 全 行 数 約 6万行 でループを回すのではなく 処理する学年のみ 約1万行 を対象とすれば か なりの高速化が期待できる 処理方法と処理時間を表4及び図2に示す 結果 1 と2 の両方を行った方が ど ちらも行わなかったときと比べ 5.2倍高速であった 表4 処理方法と処理時間 3 処理方法 1 配列へコピーなし 2 テーブル化なし 1 配列へコピー 2 テーブル化なし 1 配列へコピーなし 2 テーブル化 1 配列へコピー 2 テーブル化 3 学生100名を物理系薬学について処理した 図2 処理方法と処理時間 359 処理時間 201.3 秒 98.0 秒 66.4 秒 38.7 秒

増田和文 加藤久登 他 5.2 履修 単位修得状況が一目でわかる 出力されるシートのセルには 以下の情報が入力されている 1 単位が修得されていれば その単位数 2 履修したが単位を修得できていなければ 0 3 履修中の科目は 履 前 履 後 履 通 4 履修の履歴がなければ 5 進級要件の単位数と比較して その過不足単位数 不足の場合マイナス できあがった成績一覧表からは 学生指導において重要な情報である以下の内容が一 見してわかる 1 進学 卒業のために何単位必要なのか 1科目も落とせない状況なのか 余裕があ るのか 2 履修すべき科目を 履修していない 履修の履歴がない のまま 3 再履修すべき科目を 再履修していない 単位数が 0 のまま このような問題点を早期発見することにより 履修の追加登録や激励など 学生指導 に役立てている 6 今後の課題 薬学部では 2015年度入学生より新コアカリキュラムが適用されており 進級要件も大き く変更されている また旧コアカリの留年生との混在や 仮進級制度などもあり 複雑さは ますます増している マクロプログラムによりこれらの正確な判定ができるようになれば 見落としや 誤りがなくなり よりきめ細かな学生指導が可能になると考えられる 7 参考文献 1 就実大学 履修要覧 就実大学薬学部 大学院 2015 2 就実大学 SYLLABUS 就実大学薬学部 大学院 2015 3 Excel VBA 逆引き辞典パーフェクト 翔泳社 2011 4 Excel 関数 逆引き辞典パーフェクト 翔泳社 2011 5 ExcelVBA のプログラミングのツボとコツがゼッタイにわかる本 立山 秀利 著 秀 和システム 2007 6 Excel VBA 本格入門 日常業務の自動化からアプリケーション開発まで 大村 あつし 著 技術評論社 2015 360

教務データの処理におけるエクセルVBAの応用 8 付録 成績一覧表を作成するマクロプログラム Sub make_tab() -----------------------------------' 成績一覧表作成マクロ -----------------------------------Dim i As Long, j As Long, k As Long, flag1 As Long, flag2 As Long Dim cnt1 As Long, cnt2 As Long, IntMsg As Long, id As Long Dim Drange(2, 6) As Long Dim deg As Long, num As Long, nam As Long, grd As Long, val As Long, term As Long Dim readfile As Variant Dim PathName As String, FileName As String, pos As Long Dim AllData(99999, 99) As String ' ( 行, 列 ) ' ----------------------------' 1) 教務データのファイル名を取得 ' ----------------------------readfile = _ Application.GetOpenFilename( _ FileFilter:= " エクセルファイル (*.xls),*.xls" & _ ", エクセルファイル (*.xlsx),*.xlsx" & _ ",CSV ファイル (*.csv),*.csv" _, FilterIndex:=1 _, Title:=" 教務データファイルの選択 " _, MultiSelect:=False ) ' ----------------------------' 2) 教務データを Open, Copy, Rename, Close ' ----------------------------Workbooks.Open (readfile) ActiveWorkbook.Worksheets(1).Copy before:=thisworkbook.worksheets(1) ' 1 番 目 の シートの前にシートを挿入 ThisWorkbook.Worksheets(1).Name = "ALL_DATA" ' 挿入したシート名を ALL_DATA とする pos = InStrRev(readFile, " " ) ' 右から数えての の位置 PathName = Left(readFile, pos) ' 不使用 FileName = Mid(readFile, pos + 1) ' ファイル名のみの切り出し Workbooks(FileName).Close 361

増 田 和 文, 加 藤 久 登 他 ' 3) 教 務 データの 列 番 号 をサーチ ' deg: 学 年 の 列 番 号, num: 学 籍 番 号 の 列 番 号, nam: 科 目 名 の 列 番 号, ' grd: 評 価 の 列 番 号, val: 単 位 数 の 列 番 号, trm: 前 期 / 後 期 / 通 年 の 列 番 号 ' deg = 1, num = 2, nam = 6, grd = 8, val = 7, trm = 11 deg = 999: num = 999: nam = 999: grd = 999: val = 999: trm = 999 For term = 1 To 30 If (Worksheets("ALL_DATA" ).Cells(1, term).value = " 学 年 " ) Then deg = term If (Worksheets("ALL_DATA" ).Cells(1, term).value = "( 学 則 成 績 ) 学 籍 番 号 " ) Then num = term If (Worksheets("ALL_DATA" ).Cells(1, term).value = " 学 則 科 目 名 称 " ) Then nam = term If (Worksheets("ALL_DATA" ).Cells(1, term).value = " 評 価 名 称 ( 学 内 )" ) Then grd = term If (Worksheets("ALL_DATA" ).Cells(1, term).value = " 単 位 数 " ) Then val = term If (Worksheets("ALL_DATA" ).Cells(1, term).value = " 講 義 開 講 時 期 名 称 " ) Then trm = term Next term If (deg = 999) Then MsgBox ("ERROR : 学 年 が 見 つかりません " ): Stop If (num = 999) Then MsgBox ("ERROR : ( 学 則 成 績 ) 学 籍 番 号 が 見 つかりません " ): Stop If (nam = 999) Then MsgBox ("ERROR : 学 則 科 目 名 称 が 見 つかりません " ): Stop If (grd = 999) Then MsgBox ("ERROR : 評 価 名 称 ( 学 内 ) が 見 つかりません " ): Stop If (val = 999) Then MsgBox ("ERROR : 単 位 数 が 見 つかりません " ): Stop If (trm = 999) Then MsgBox ("ERROR : 講 義 開 講 時 期 名 称 が 見 つかりません " ): Stop 362

教 務 データの 処 理 におけるエクセルVBAの 応 用 ' 4-1) 教 務 データのシートは 何 列 (r) あるか? r = 1 Do While Worksheets("ALL_DATA" ).Cells(1, r).value <> "" r = r + 1 Loop r = r - 1 ' 4-2) 教 務 データのシートは 何 行 (i) あるか? i = 2 Do While Worksheets("ALL_DATA" ).Cells(i, 1).Value <> "" i = i + 1 Loop i = i - 1 ' 5-1) 教 務 データを 配 列 変 数 へコピー For ii = 1 To i For rr = 1 To r AllData(ii, rr) = Worksheets("ALL_DATA" ).Cells(ii, rr).value Next rr Next ii ' 5-2) 教 務 データ "ALL_DATA" を 強 制 削 除 Application.DisplayAlerts = False ThisWorkbook.Worksheets(1).Delete Application.DisplayAlerts = True ' 6) 教 務 データのうち 各 学 年 は 何 行 から 何 行 まで?テーブルの 作 成 ' 教 務 データは 学 年 ごとに 並 んでいる 必 要 あり j = 1 Drange(1, j) = 2 363

増 田 和 文, 加 藤 久 登 他 For k = 2 To i If (AllData(k, deg) = CStr(j) And _ AllData(k + 1, deg) = CStr(j)) Then GoTo 1 Else Drange(2, j) = k If (j = 6) Then GoTo Main ' テーブル 作 成 完 了 でデータ 処 理 開 始 Drange(1, j + 1) = k + 1 j = j + 1 1 Next k Main: ' 7-1) シートを 順 次 処 理 For s = 1 To Worksheets.Count ' ワークシートの 数 だけループを 回 す ThisWorkbook.Worksheets(s).Activate ' 7-2) 現 在 (Active) のシートはどの 学 年 か? id = 999 If InStr(ActiveSheet.Cells(1, 1), " 1 年 次 生 " ) <> 0 Then id = 1 If InStr(ActiveSheet.Cells(1, 1), " 2 年 次 生 " ) <> 0 Then id = 2 If InStr(ActiveSheet.Cells(1, 1), " 3 年 次 生 " ) <> 0 Then id = 3 If InStr(ActiveSheet.Cells(1, 1), " 4 年 次 生 " ) <> 0 Then id = 4 If InStr(ActiveSheet.Cells(1, 1), " 5 年 次 生 " ) <> 0 Then id = 5 If InStr(ActiveSheet.Cells(1, 1), " 6 年 次 生 " ) <> 0 Then id = 6 If InStr(ActiveSheet.Cells(1, 1), "1 年 次 生 " ) <> 0 Then id = 1 If InStr(ActiveSheet.Cells(1, 1), "2 年 次 生 " ) <> 0 Then id = 2 If InStr(ActiveSheet.Cells(1, 1), "3 年 次 生 " ) <> 0 Then id = 3 If InStr(ActiveSheet.Cells(1, 1), "4 年 次 生 " ) <> 0 Then id = 4 If InStr(ActiveSheet.Cells(1, 1), "5 年 次 生 " ) <> 0 Then id = 5 If InStr(ActiveSheet.Cells(1, 1), "6 年 次 生 " ) <> 0 Then id = 6 If id = 999 Then MsgBox "ERROR : 学 年 が 特 定 できません " : Stop 364

教 務 データの 処 理 におけるエクセルVBAの 応 用 ' 7-3) 現 在 (Active) のシートは 何 行? 何 列? cnt1 = 5 Do While ActiveSheet.Cells(cnt1, 1) <> " " cnt1 = cnt1 + 1 Loop cnt1 = cnt1-1 cnt2 = 1 Do While ActiveSheet.Cells(3, cnt2) <> " " cnt2 = cnt2 + 1 Loop cnt2 = cnt2-2 ' 7-4) 現 在 (Active) のシートをクリア For c = 5 To cnt1 For r = 4 To cnt2 ActiveSheet.Cells(c, r) = " " ActiveSheet.Cells(c, r).font.size = 10.5 ActiveSheet.Cells(c, r).horizontalalignment = xlcenter Next r Next c ' 7-5) データ 作 成 ループ( 学 生 ( 行 ) ごとに 科 目 ( 列 ) をチェック) For k = 5 To cnt1 ' 行 : 学 生 Application.StatusBar = s & "/" & Worksheets.Count & ", " & k & "/" & cnt1 ' ステータス バー 表 示 For j = 4 To cnt2 ' 列 : 科 目 名 For i = Drange(1, id) To Drange(2, id) ' 教 務 データの 対 象 範 囲 をサーチ If (Replace(Replace(Cells(k, 2), "-", "" ), " ", "" ) = AllData(i, num)) Then ' 学 籍 番 号 から - を 除 いて 比 較 If (Cells(3, j) = AllData(i, nam)) Then If (AllData(i, grd) = " S " _ Or AllData(i, grd) = " A " _ 365

増 田 和 文, 加 藤 久 登 他 Or AllData(i, grd) = " B " _ Or AllData(i, grd) = " C " _ Or AllData(i, grd) = " F " ) Then Cells(k, j) = AllData(i, val) GoTo 20 If (AllData(i, grd) = " 履 " _ Or AllData(i, grd) = " 履 修 中 " ) Then If (AllData(i, trm) = " 前 期 " ) Then Cells(k, j) = " 履 ( 前 )" Cells(k, j).interior.color = RGB(183, 222, 232) ' セルに 色 を 付 ける GoTo 20 If (AllData(i, trm) = " 後 期 " ) Then Cells(k, j) = " 履 ( 後 )" Cells(k, j).interior.color = RGB(216, 228, 188) ' セルに 色 を 付 ける GoTo 20 If (AllData(i, trm) = " 通 年 " ) Then Cells(k, j) = " 履 ( 通 )" GoTo 20 Cells(k, j) = AllData(i, grd) If (Cells(k, j) = "" ) Then Cells(k, j) = " " 10 Next i 20 Next j 30 Next k 40 Next s Application.StatusBar = False End Sub 366