關於 Google Meet 如何自動點名,請看此篇文章,Google Meet 如何自動點名?
打開 以 Google Meet Attendance List 產生的出席名單的檔案,如 2021-06-04T05_56_27.631Z. csv。
打開 有學生資料的選課單 Excel 檔,如 阿旺師點名簿.xlsx。
以 Google Meet Attendance List 產生的出席名單如下,選此工作表,按右鍵,選「移動或複製」。
打開 有學生資料的選課單 Excel 檔,如 阿旺師點名簿.xlsx。
以 Google Meet Attendance List 產生的出席名單如下,選此工作表,按右鍵,選「移動或複製」。
註:
Google Meet Attendance List 產生的出席名單,跟上面不一樣 ,已經有新的格式。
所以 後面的程式要修改為
Const attend_start_row = 6 ' 當節出席名單的工作表 第一位同學的列號
當節出席名單的工作表 第一位同學的列號,請根據 Google Meet Attendance List 產生的出席名單來修改。
活頁簿選 選課名單活頁簿,如 阿旺師點名簿.xlsx。
選取工作表之前,選[「工作表1」。勾選 「建立複本」。按 「確定」,就可把 出席名單的工作表 複製到 選課單活頁簿 內。
在 選課名單活頁簿 內,選 2021-06-04 此出席名單 工作表,按右鍵,選「重新命名」。
修改名稱 為 : 2021-06-04-05-彈性學習。 此課程 是在 2021-06-04 第5節上課,課程名稱為 :彈性學習。
出席名單的工作表名稱:2021-06-04-05-彈性學習。
程式中的常數要修改 :
Const attendance = "2021-06-04-05-彈性學習" ' 當節出席名單的工作表名稱
Const attend_start_row = 2 ' 當節出席名單的工作表 第一位同學的列號
Const attend_end_row = 28 ' 當節出席名單的工作表 最後一位同學的列號
Excel 的 選課名單,工作表名稱:手機APP應用程式設計。
程式中的常數要修改 :
Const course_name = "手機APP應用程式設計" ' 選課名單 工作表的名稱
Const begin_column = 6 ' 要開始寫入的欄位,即 F 欄
Const date_row = 8 ' 要寫入日期的列號
Const student_first_row = 11 ' 要點名的學生第一位同學的列號 11
Const last_student_row = 38 ' 最後一位同學的列號
Const student_name_column = 4 ' 姓名 的欄位,在 D 欄
「檢視」,選 「巨集/檢視巨集」。
先輸入巨集名稱,如 take_attendance 。即點名的意思。
按「建立」。
按「建立」。
在 Sub take_attendance() 和 End Sub 的中間 。
貼上以下程式碼:
' 以下為出席名單工作表的參數 ,以 外掛程式 attendance list 所產生的工作表為例
Const attendance = "2021-06-25-05-彈性學習" ' 當節出席名單的工作表名稱
Const attend_start_row = 6 ' 當節出席名單的工作表 第一位同學的列號
Dim rownumber As Integer ' 當節出席名單的工作表 的列數
'如果 最後一列,是老師的名字,如阿旺師,就不用算,下面也不用改
Const attend_end_row = 28 ' 當節出席名單的工作表 最後一位同學的列號
' 以下為選課名單工作表的參數
Const course_name = "手機APP應用程式設計" ' 選課名單 工作表的名稱
Const begin_column = 8 ' 要開始寫入的欄位
Const date_row = 8 ' 要寫入日期的列號
Const first_student_row = 11 ' 要點名的學生第一位同學的列號 11
Const last_student_row = 38 ' 最後一位同學的列號
Const student_name_column = 4 ' 姓名 的欄位
Const absent_string = "曠課" ' 沒來的同學,要寫入的文字
Const late_time = 10 ' 超過10 分鐘進來的,標示 遲到
Const late_string = "遲到" '
Dim i, j As Integer
Dim attend_student_name As String
Dim attend_student_name_len As Integer
Dim presentf As Boolean ' 如果有出席, presentf 設為 true
Dim first_seen As Date
rownumber = Sheets(attendance).Cells(Rows.Count, 1).End(xlUp).Row ' 工作表有幾列
Sheets(course_name).Cells(date_row, begin_column) = Left(attendance, 13) ' 2021-06-04-05-彈性學習中的日期節數,是從左邊取13個字 即 2021-06-04-05
For i = first_student_row To last_student_row
presentf = False
For j = attend_start_row To rownumber - 1 ' 最後一列,是老師的名字,如阿旺師,所以不用算 ,此程式修改成沒用到 attend_end_row
attend_student_name = Sheets(attendance).Cells(j, 1)
attend_student_name_len = Strings.Len(attend_student_name) - 10 ' 出席名單的 第1欄為 111級商4班10號吳佩容,前面10個字元不是姓名
If Strings.Right(attend_student_name, attend_student_name_len) = Sheets(course_name).Cells(i, student_name_column) Then
presentf = True
If Minute(Sheets(attendance).Cells(j, 2)) > 10 Then
Sheets(course_name).Cells(i, begin_column) = late_string
End If
Exit For
End If
Next j
If presentf = False Then Sheets(course_name).Cells(i, begin_column) = absent_string
Next i
按左上方的「執行」鈕。
執行結果如下:
按左上方的 儲存 鈕。
記得選 「否」,要有巨集 的功能。
存檔類型 要選 *.xlsm (要有 Macro 巨集 ),不是 xlsx。
下次打開此活頁簿,要選 「啟用內容」,讓巨集程式有作用。
註:
- 如果有二位學生同名,請手動修改程式執行後的結果。
- 出席名單的 First Seen 和 Time in Call 此二個欄位的格式為 日期時間,所以VBA 的 first_seen 變數要宣告為date,不能當作字串,不然會有問題。