⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydata.cls

📁 guan yu pai ke xi tong de ruan jian
💻 CLS
📖 第 1 页 / 共 5 页
字号:
    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 + -