📄 mydata.cls
字号:
For TableIndex = 0 To Me.TableCount - 1
TemDatabase.Workbooks(1).Worksheets(TableIndex + 1).Name = Me.Tables(TableIndex).Name '表格名称.
'确定数据数数组大小.
If Me.Tables(TableIndex).RowCount > 0 And Me.Tables(TableIndex).Fields.FieldCount > 0 Then
ReDim TemData1(1 To Me.Tables(TableIndex).RowCount, 1 To Me.Tables(TableIndex).Fields.FieldCount)
For ColIndex = 0 To Me.Tables(TableIndex).Fields.FieldCount - 1
For RowIndex = 0 To Me.Tables(TableIndex).RowCount - 1
'读取数据.
TemData1(RowIndex + 1, ColIndex + 1) = Me.Tables(TableIndex).Rows(RowIndex).Items(ColIndex).Value
Next
Next
'计算单元格引用区域字符串。
TemStr = "A1:" & NumToColumnname(Me.Tables(TableIndex).Fields.FieldCount - 1) & Me.Tables(TableIndex).RowCount
'将表格数据写入单元格中(采用块写入方式比一个一个地写入数据快许多!)。
TemDatabase.Workbooks(1).Worksheets(TableIndex + 1).Range(TemStr).NumberFormat = "@" '以文本格式保存数据(防止Excel自动转换数据).
TemDatabase.Workbooks(1).Worksheets(TableIndex + 1).Range(TemStr).Value = TemData1
End If
Next
'填写增加的表格(必须是增加了班级、教师、科目和资源之后才有)。
If Me.Tables(0).RowCount > 0 And Me.Tables(1).RowCount > 0 And Me.Tables(2).RowCount > 0 And Me.Tables(3).RowCount > 0 Then
TianCount = 2 + Me.Tables(6).RowCount
JieCount = 2 + Me.Tables(7).Rows(0).Items(0).Value + Me.Tables(7).Rows(0).Items(1).Value + Me.Tables(7).Rows(0).Items(2).Value + Me.Tables(7).Rows(0).Items(3).Value + Me.Tables(7).Rows(0).Items(4).Value
ReDim TemData1(0 To Me.Tables(0).RowCount * JieCount, 0 To TianCount * 2)
ReDim TemData2(0 To Me.Tables(1).RowCount * JieCount, 0 To TianCount * 2)
ReDim TemData3(0 To Me.Tables(3).RowCount * JieCount, 0 To TianCount * 2)
ReDim TemData4(0 To (JieCount + 1) * 2, 0 To Me.Tables(6).RowCount * Me.Tables(0).RowCount + 2)
'填写课程数据。
For RowIndex = 0 To Me.Tables(8).RowCount - 1
For ColIndex = 8 To 27
TemNum = Me.Tables(8).Rows(RowIndex).Items(ColIndex).Value
If TemNum > 0 Then
'找到一个排课标志。
TemNum = Me.Tables(8).Rows(RowIndex).Items(ColIndex).Value
TianIndex = TemNum \ 100 '某天。
DuanIndex = (TemNum Mod 100) \ 10 '某段。
JieIndex = TemNum Mod 10 '某节。
'计算存贮位置。
TemNum = JieIndex '纵向相对位置。
'根据排课时段确定相对位置。
For ForIndex = 1 To DuanIndex - 1 Step 1
TemNum = TemNum + Me.Tables(7).Rows(0).Items(ForIndex - 1).Value
Next
'班级课表。
TemData1(TemNum + Me.Tables(8).Rows(RowIndex).Items(0).Value * JieCount, TianIndex + 1) = Me.Tables(2).Rows(Me.Tables(8).Rows(RowIndex).Items(2).Value).Items(0).Value '科目名称。
TemData1(TemNum + Me.Tables(8).Rows(RowIndex).Items(0).Value * JieCount, TianIndex + TianCount + 2) = Me.Tables(1).Rows(Me.Tables(8).Rows(RowIndex).Items(1).Value).Items(0).Value '教师姓名。
'教师课表。
TemData2(TemNum + Me.Tables(8).Rows(RowIndex).Items(1).Value * JieCount, TianIndex + 1) = Me.Tables(2).Rows(Me.Tables(8).Rows(RowIndex).Items(2).Value).Items(0).Value '科目名称。
TemData2(TemNum + Me.Tables(8).Rows(RowIndex).Items(1).Value * JieCount, TianIndex + TianCount + 2) = Me.Tables(0).Rows(Me.Tables(8).Rows(RowIndex).Items(0).Value).Items(0).Value '班级名称。
'资源课表
If Me.Tables(8).Rows(RowIndex).Items(3).Value >= 0 Then '表示使用了资源。
TemData3(TemNum + Me.Tables(8).Rows(RowIndex).Items(3).Value * JieCount, TianIndex + 1) = Me.Tables(0).Rows(Me.Tables(8).Rows(RowIndex).Items(0).Value).Items(0).Value '班级名称。
TemData3(TemNum + Me.Tables(8).Rows(RowIndex).Items(3).Value * JieCount, TianIndex + TianCount + 2) = Me.Tables(1).Rows(Me.Tables(8).Rows(RowIndex).Items(1).Value).Items(0).Value '教师姓名。
End If
'总课表。
TemData4(TemNum + 2, Me.Tables(0).RowCount * (TianIndex - 1) + Me.Tables(8).Rows(RowIndex).Items(0).Value + 2) = Me.Tables(2).Rows(Me.Tables(8).Rows(RowIndex).Items(2).Value).Items(0).Value
TemData4(TemNum + JieCount + 3, Me.Tables(0).RowCount * (TianIndex - 1) + Me.Tables(8).Rows(RowIndex).Items(0).Value + 2) = Me.Tables(1).Rows(Me.Tables(8).Rows(RowIndex).Items(1).Value).Items(0).Value
End If
Next
Next
'填写班级课表中的班级名称。
For RowIndex = 0 To Me.Tables(0).RowCount - 1
TemData1(RowIndex * JieCount, 0) = Me.Tables(0).Rows(RowIndex).Items(0).Value
TemData1(RowIndex * JieCount, TianCount + 1) = Me.Tables(0).Rows(RowIndex).Items(0).Value
Next
'填写教师课表中的教师姓名。
For RowIndex = 0 To Me.Tables(1).RowCount - 1
TemData2(RowIndex * JieCount, 0) = Me.Tables(1).Rows(RowIndex).Items(0).Value
TemData2(RowIndex * JieCount, TianCount + 1) = Me.Tables(1).Rows(RowIndex).Items(0).Value
Next
'填写资源课表中的资源名称。
For RowIndex = 0 To Me.Tables(3).RowCount - 1
TemData3(RowIndex * JieCount, 0) = Me.Tables(3).Rows(RowIndex).Items(0).Value
TemData3(RowIndex * JieCount, TianCount + 1) = Me.Tables(3).Rows(RowIndex).Items(0).Value
Next
'填写课表中的教学日名称(及总课表中的班级名称)。
For TianIndex = 0 To Me.Tables(6).RowCount - 1 '从第一天开始。
'填写总课表中的教学日名称。
TemData4(1, TianIndex * Me.Tables(0).RowCount + 2) = Me.Tables(6).Rows(TianIndex).Items(0).Value
TemData4(JieCount + 2, TianIndex * Me.Tables(0).RowCount + 2) = Me.Tables(6).Rows(TianIndex).Items(0).Value
For RowIndex = 0 To Me.Tables(0).RowCount - 1
'填写班级课表中的教学日名称。
TemData1(RowIndex * JieCount, TianIndex + 2) = Me.Tables(6).Rows(TianIndex).Items(0).Value
TemData1(RowIndex * JieCount, TianCount + TianIndex + 3) = Me.Tables(6).Rows(TianIndex).Items(0).Value
'填写总课表班级名称。
TemData4(2, TianIndex * Me.Tables(0).RowCount + RowIndex + 2) = Me.Tables(0).Rows(RowIndex).Items(0).Value
TemData4(JieCount + 3, TianIndex * Me.Tables(0).RowCount + RowIndex + 2) = Me.Tables(0).Rows(RowIndex).Items(0).Value
Next
For RowIndex = 0 To Me.Tables(1).RowCount - 1
'填写教师课表中的教学日名称。
TemData2(RowIndex * JieCount, TianIndex + 2) = Me.Tables(6).Rows(TianIndex).Items(0).Value
TemData2(RowIndex * JieCount, TianCount + TianIndex + 3) = Me.Tables(6).Rows(TianIndex).Items(0).Value
Next
For RowIndex = 0 To Me.Tables(3).RowCount - 1
'填写资源课表中的教学日名称。
TemData3(RowIndex * JieCount, TianIndex + 2) = Me.Tables(6).Rows(TianIndex).Items(0).Value
TemData3(RowIndex * JieCount, TianCount + TianIndex + 3) = Me.Tables(6).Rows(TianIndex).Items(0).Value
Next
Next
'填写时段名称及节号(某时段有课才显示时段名,只有超过1节的时段才显示节号)。
TemNum = 0
For ForIndex = 0 To 4 '从第一个时段开始。
'填写项目名称。
If Me.Tables(7).Rows(0).Items(ForIndex).Value > 0 Then
'填写总课表中的时段名称。
TemData4(TemNum + 3, 0) = Me.Tables(4).Rows(ForIndex).Items(0).Value
TemData4(TemNum + JieCount + 4, 0) = Me.Tables(4).Rows(ForIndex).Items(0).Value
'填写总课表中的节号。
If Me.Tables(7).Rows(0).Items(ForIndex).Value > 1 Then
For RowIndex = 1 To Me.Tables(7).Rows(0).Items(ForIndex).Value
TemData4(TemNum + RowIndex + 2, 1) = CStr(RowIndex)
TemData4(TemNum + JieCount + RowIndex + 3, 1) = CStr(RowIndex)
Next
End If
'填写班级课表中的时段名称。
For RowIndex = 0 To Me.Tables(0).RowCount - 1
TemData1(RowIndex * JieCount + TemNum + 1, 0) = Me.Tables(4).Rows(ForIndex).Items(0).Value
TemData1(RowIndex * JieCount + TemNum + 1, TianCount + 1) = Me.Tables(4).Rows(ForIndex).Items(0).Value
'填写班级课表中的节号。
If Me.Tables(7).Rows(0).Items(ForIndex).Value > 1 Then
For ColIndex = 1 To Me.Tables(7).Rows(0).Items(ForIndex).Value
TemData1(TemNum + RowIndex * JieCount + ColIndex, 1) = CStr(ColIndex)
TemData1(TemNum + RowIndex * JieCount + ColIndex, TianCount + 2) = CStr(ColIndex)
Next
End If
Next
'填写教师课表中的时段名称。
For RowIndex = 0 To Me.Tables(1).RowCount - 1
TemData2(RowIndex * JieCount + TemNum + 1, 0) = Me.Tables(4).Rows(ForIndex).Items(0).Value
TemData2(RowIndex * JieCount + TemNum + 1, TianCount + 1) = Me.Tables(4).Rows(ForIndex).Items(0).Value
'填写教师课表中的节号。
If Me.Tables(7).Rows(0).Items(ForIndex).Value > 1 Then
For ColIndex = 1 To Me.Tables(7).Rows(0).Items(ForIndex).Value
TemData2(TemNum + RowIndex * JieCount + ColIndex, 1) = CStr(ColIndex)
TemData2(TemNum + RowIndex * JieCount + ColIndex, TianCount + 2) = CStr(ColIndex)
Next
End If
Next
'填写资源课表中的时段名称。
For RowIndex = 0 To Me.Tables(3).RowCount - 1
TemData3(RowIndex * JieCount + TemNum + 1, 0) = Me.Tables(4).Rows(ForIndex).Items(0).Value
TemData3(RowIndex * JieCount + TemNum + 1, TianCount + 1) = Me.Tables(4).Rows(ForIndex).Items(0).Value
'填写资源课表中的节号。
If Me.Tables(7).Rows(0).Items(ForIndex).Value > 1 Then
For ColIndex = 1 To Me.Tables(7).Rows(0).Items(ForIndex).Value
TemData3(TemNum + RowIndex * JieCount + ColIndex, 1) = CStr(ColIndex)
TemData3(TemNum + RowIndex * JieCount + ColIndex, TianCount + 2) = CStr(ColIndex)
Next
End If
Next
TemNum = TemNum + Me.Tables(7).Rows(0).Items(ForIndex).Value
End If
Next
'以块输入方式将数据写入文件对象中。
TemStr = "A1:" & NumToColumnname(TianCount * 2) & Me.Tables(0).RowCount * JieCount
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 1).Range(TemStr).Value = TemData1
TemStr = "A1:" & NumToColumnname(TianCount * 2) & Me.Tables(1).RowCount * JieCount
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2).Range(TemStr).Value = TemData2
TemStr = "A1:" & NumToColumnname(TianCount * 2) & Me.Tables(3).RowCount * JieCount
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 3).Range(TemStr).Value = TemData3
TemStr = "A1:" & NumToColumnname(Me.Tables(6).RowCount * Me.Tables(0).RowCount + 2) & JieCount * 2 + 2
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 4).Range(TemStr).Value = TemData4
'设置表格线。
For RowIndex = 0 To Me.Tables(0).RowCount - 1 '班级课表。
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 1).Range("A" & RowIndex * JieCount + 1 & ":" & NumToColumnname(Me.Tables(6).RowCount + 1) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & RowIndex * JieCount + 1 & ":" & NumToColumnname((Me.Tables(6).RowCount + 2) * 2) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
Next
For RowIndex = 0 To Me.Tables(1).RowCount - 1 '教师课表。
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2).Range("A" & RowIndex * JieCount + 1 & ":" & NumToColumnname(Me.Tables(6).RowCount + 1) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & RowIndex * JieCount + 1 & ":" & NumToColumnname((Me.Tables(6).RowCount + 2) * 2) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
Next
For RowIndex = 0 To Me.Tables(3).RowCount - 1 '资源课表。
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 3).Range("A" & RowIndex * JieCount + 1 & ":" & NumToColumnname(Me.Tables(6).RowCount + 1) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 3).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & RowIndex * JieCount + 1 & ":" & NumToColumnname((Me.Tables(6).RowCount + 2) * 2) & CStr(JieCount * (RowIndex + 1) - 1)).Borders
.LineStyle = 1
.Weight = 2
End With
Next
For ForIndex = 0 To 1 '总课表。
With TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 4).Range("A" & ForIndex * (JieCount + 1) + 2 & ":" & NumToColumnname(Me.Tables(6).RowCount * Me.Tables(0).RowCount + 1) & (ForIndex + 1) * (JieCount + 1)).Borders
.LineStyle = 1
.Weight = 2
End With
Next
'合并单元格(不包括资源课表)。
For ForIndex = 0 To 1
For RowIndex = 0 To Me.Tables(ForIndex).RowCount - 1 '合并分课表标题单元格。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range("A" & RowIndex * JieCount + 1 & ":b" & RowIndex * JieCount + 1).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & RowIndex * JieCount + 1 & ":" & NumToColumnname(Me.Tables(6).RowCount + 4) & RowIndex * JieCount + 1).MergeCells = True
TemNum = 0
For TianCount = 0 To 4
If Me.Tables(7).Rows(0).Items(TianCount).Value > 0 Then
If Me.Tables(7).Rows(0).Items(TianCount).Value > 1 Then '多于一节,纵向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range("a" & JieCount * RowIndex + TemNum + 2 & ":a" & JieCount * RowIndex + TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value + 1).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + 2 & ":" & NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value + 1).MergeCells = True
Else '只有一节,横向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range("a" & JieCount * RowIndex + TemNum + 2 & ":b" & JieCount * RowIndex + TemNum + 2).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + 2 & ":" & NumToColumnname(Me.Tables(6).RowCount + 4) & JieCount * RowIndex + TemNum + 2).MergeCells = True
End If
End If
TemNum = TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value
Next
Next
'合并总课表标题单元格。
For RowIndex = 0 To Me.Tables(6).RowCount - 1 '各天的标志
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 4).Range(NumToColumnname(Me.Tables(0).RowCount * RowIndex + 2) & ForIndex * (JieCount + 1) + 2 & ":" & NumToColumnname(Me.Tables(0).RowCount * (RowIndex + 1) + 1) & ForIndex * (JieCount + 1) + 2).MergeCells = True
Next
TemNum = 0
For TianCount = 0 To 4 '各时段标志。
If Me.Tables(7).Rows(0).Items(TianCount).Value > 0 Then
If Me.Tables(7).Rows(0).Items(TianCount).Value > 1 Then '多于一节,纵向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 4).Range("a" & (JieCount + 1) * ForIndex + TemNum + 4 & ":a" & (JieCount + 1) * ForIndex + TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value + 3).MergeCells = True
Else '只有一节,横向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 4).Range("a" & (JieCount + 1) * ForIndex + TemNum + 4 & ":b" & (JieCount + 1) * ForIndex + TemNum + 4).MergeCells = True
End If
End If
TemNum = TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value
Next
Next
'合并单元格(资源课表)。
For RowIndex = 0 To Me.Tables(3).RowCount - 1 '合并分课表标题单元格。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range("A" & RowIndex * JieCount + 1 & ":b" & RowIndex * JieCount + 1).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & RowIndex * JieCount + 1 & ":" & NumToColumnname(Me.Tables(6).RowCount + 4) & RowIndex * JieCount + 1).MergeCells = True
TemNum = 0
For TianCount = 0 To 4
If Me.Tables(7).Rows(0).Items(TianCount).Value > 0 Then
If Me.Tables(7).Rows(0).Items(TianCount).Value > 1 Then '多于一节,纵向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range("a" & JieCount * RowIndex + TemNum + 2 & ":a" & JieCount * RowIndex + TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value + 1).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + 2 & ":" & NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value + 1).MergeCells = True
Else '只有一节,横向合并。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range("a" & JieCount * RowIndex + TemNum + 2 & ":b" & JieCount * RowIndex + TemNum + 2).MergeCells = True
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + 2 + 1).Range(NumToColumnname(Me.Tables(6).RowCount + 3) & JieCount * RowIndex + TemNum + 2 & ":" & NumToColumnname(Me.Tables(6).RowCount + 4) & JieCount * RowIndex + TemNum + 2).MergeCells = True
End If
End If
TemNum = TemNum + Me.Tables(7).Rows(0).Items(TianCount).Value
Next
Next
For ForIndex = 1 To 4
'自动换行。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex).Columns("a:iv").WrapText = True
'垂直居中。
TemDatabase.Workbooks(1).Worksheets(Me.TableCount + ForIndex).Columns("a:iv").VerticalAlignment = &HFFFFEFF4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -