用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - vb代码库

课表导出高三任课教师节次表

2020-08-18 作者:麒麟举报

[vb]代码库

Sub 任课教师节次表()
Dim arr
Dim str As String
Dim i, j, k, m, n
Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet
str = "高三"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set ws = Worksheets(str & "年级课表")
i = Application.WorksheetFunction.CountA(ws.Rows(1))
arr = Range(ws.Cells(4, 1), ws.Cells(81, i))
'处理括号
arr(1, 1) = "星期": arr(1, 2) = "节次"
For j = 1 To i
If arr(1, j) Like "*(*" Then
arr(1, j) = Replace(Replace(StrConv(arr(1, j), vbNarrow), "(", ""), ")", "")
End If
Next
'提出教师姓名
For j = 2 To UBound(arr)
    For k = 3 To i
        arr(j, k) = Mid(arr(j, k), InStr(arr(j, k), Chr(10)) + 1)
    Next
Next
'处理特殊情况,班会/生态文明等
For j = 1 To i
    If arr(54, j) Like "*/*" Then
    arr(54, j) = Mid(arr(54, j), InStr(arr(54, j), "/") + 1, 10)
    End If
Next
'结果输出
k = 0
For Each ws2 In Sheets
    If ws2.Name = str & "教师" Then
        k = 1
    End If
Next
If k = 1 Then
    Sheets(str & "教师").Delete
End If
Sheets.Add after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = str & "教师"
Set ws1 = Sheets(str & "教师")
Range(ws1.Cells(1, 1), ws1.Cells(1, i - 1)).Merge
With Range(ws1.Cells(1, 1), ws1.Cells(1, i - 1))
    .Font.Size = 24
    .HorizontalAlignment = xlCenter
End With
ws1.Range("a1") = "开阳一中2020-2021学年度第一学期教师任课节次表(" & str & "年级)"
ws1.Cells(1, i) = Format(Now, "mmdd")
With ws1.Cells(2, 1).Resize(UBound(arr), i)
    .Value = arr
    .Borders.LineStyle = xlContinuous
End With
For j = 57 To 3 Step -1
    If ws1.Cells(j, 2) = "第九节" Or ws1.Cells(j, 2) = "晚自习" Then
        Range("a" & j).EntireRow.Delete
    End If
Next
Range("a48:a69").EntireRow.Delete

For j = 3 To 47
    If Cells(j, 1) <> "" Then
        Range("a" & j & ":a" & j + 8).Merge
    End If
Next
 With Range("a3:a60")
    .Orientation = xlVertical
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With
Columns("b:aa").ColumnWidth = 6
Columns("a:a").ColumnWidth = 4
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Call 晚自习
Call 打印设置
End Sub




Sub 晚自习()
Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet
Dim i, j, k, m, n
Dim arr, brr()
Dim str As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
str = "高三"
Set ws = Sheets("高三年级课表")
For Each ws2 In Sheets
    If ws2.Name = str & "晚" Then
        k = 1
    End If
Next
If k = 1 Then
    Sheets(str & "晚").Delete
End If
ws.Copy after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "高三晚"
Set ws1 = Sheets("高三晚")
ws1.Range("a5:a14").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    For i = 81 To 5 Step -1
        If Cells(i, 1) = "" Or Cells(i, 1).Value = "星期六" Then
            Range("a" & i).EntireRow.Delete
        End If
    Next
Cells(10, 1) = "星期日"
Columns(2).Delete
j = Application.WorksheetFunction.CountA(Rows(1))
Rows(3).Delete
Rows(1).Delete
Cells(2, 1).Value = "星期"
arr = Range(ws1.Cells(2, 1), ws1.Cells(8, j))
For k = 1 To j
If arr(1, k) Like "*(*" Then
arr(1, k) = Replace(Replace(StrConv(arr(1, k), vbNarrow), "(", ""), ")", "")
End If
Next
ReDim brr(1 To 7, 1 To j)

For n = 1 To j
brr(1, n) = arr(1, n)
brr(2, n) = arr(7, n)
For m = 3 To 7
brr(m, n) = arr(m - 1, n)
Next
Next
ws1.Range("a3").Resize(7, j) = brr
ws1.Range("a3").Resize(11, j).Borders.LineStyle = xlContinuous
ws1.Range("a3").Resize(7, j).HorizontalAlignment = xlCenter
ws1.Range("a3").Resize(7, j).VerticalAlignment = xlCenter
Range(ws1.Cells(1, 1), ws1.Cells(1, j)).Merge
With Range(ws1.Cells(1, 1), ws1.Cells(1, j - 1))
    .Font.Size = 20
    .HorizontalAlignment = xlCenter
End With
ws1.Range("a1") = "开阳一中2020-2021学年度第一学期晚自习检查表(" & str & "年级)"
Range(ws1.Cells(2, 1), ws1.Cells(2, j - 1)).Merge
ws1.Range("a2").Font.Size = 14
ws1.Range("a2").HorizontalAlignment = xlCenter
ws1.Cells(2, 1) = "第   周  从   月  日至    月    日"
ws1.Cells(2, j) = Format(Now, "mmdd")
With Range("a4:a9")
    .Orientation = xlVertical
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
End With
Range(Cells(10, 1), Cells(10, j)).Merge
Range(Cells(11, 1), Cells(11, j)).Merge
Range(Cells(12, 1), Cells(12, j)).Merge
Range(Cells(13, 1), Cells(13, j)).Merge

Range(Cells(10, 1), Cells(10, j)).Font.Size = 14
Range("a10") = "备注"

Columns("b:aa").ColumnWidth = 6
Columns("a:a").ColumnWidth = 4
Rows(3).RowHeight = 25
Rows("4:9").RowHeight = 45
Rows("10:13").RowHeight = 30
Application.DisplayAlerts = True
Application.ScreenUpdating = True



Call 打印设置
End Sub

Sub 打印设置()
    Application.PrintCommunication = False '中断打印机的通信
    With ActiveSheet.PageSetup
        .PrintTitleRows = "" '设置打印表头比如= "$1:$2"为设置第一二两行为表头
        .PrintTitleColumns = "" '设置打印左侧重复列数
    End With
    Application.PrintCommunication = True '恢复打印机的通信
    ActiveSheet.PageSetup.PrintArea = "" '打印区域,以字符串的形式= "$A$1:$Y$47"
    Application.PrintCommunication = False '中断打印机的通信
    With ActiveSheet.PageSetup
        .LeftHeader = "" '返回或设置工作簿或节的左页眉上的文本对齐方式。
        .CenterHeader = "" '居中对齐 PageSetup 对象中的页眉信息。可读/写 String 类型。
        .RightHeader = "" '返回或设置页眉的右边部分内容。可读/写 String 类型。
        .LeftFooter = "" '返回或设置工作簿或节的左页脚上的文本对齐方式。
        .CenterFooter = "" '居中对齐 PageSetup 对象中的页脚信息。可读/写 String 类型。
'(磅:指打印的字符的高度的度量单位。1 磅等于 1/72 英寸,或大约等于 1 厘米的 1/28。)
        .RightFooter = "" '返回或设置页面右边缘与页脚右边界之间的距离(以磅为单位)。可读/写 String 类型
        .LeftMargin = Application.InchesToPoints(0) '以磅为单位返回或设置左边距的大小。Double 类型,可读写。
        .RightMargin = Application.InchesToPoints(0) '以磅 为单位返回或设置右边距的大小。Double 类型,可读写。
        .TopMargin = Application.InchesToPoints(0.393700787401575) '以磅 为单位返回或设置上边距的大小。Double 类型,可读写。
        .BottomMargin = Application.InchesToPoints(0) '以磅 为单位返回或设置底端边距的大小。Double 类型,可读写。
        .HeaderMargin = Application.InchesToPoints(0) '以磅为单位返回或设置页面顶端到页眉的距离。Double 类型,可读写。
        .FooterMargin = Application.InchesToPoints(0) '以磅 为单位返回或设置页脚到页面底端的距离。Double 类型,可读写。
        .PrintHeadings = False '如果打印本页时同时打印行标题和列标题,则该值为 True。仅应用于工作表。Boolean 类型,可读写。
        .PrintGridlines = False '如果在页面上打印单元格网格线,则该值为 True。仅应用于工作表。Boolean 类型,可读写。
        .PrintComments = xlPrintNoComments '返回或设置批注随工作表打印的方式。XlPrintLocation 类型,可读写。
        .PrintQuality = 600 '返回或设置打印质量。Variant 类型,可读写。
        .CenterHorizontally = True '水平居中为true,不选则为false
        .CenterVertically = False '垂直居中为true,不选则为false
        .Orientation = xlLandscape '横向打印,纵向为xlPortrait
        .Draft = False '如果打印工作表时不打印其中的图形,则该属性值为 True。Boolean 类型,可读写。
        .PaperSize = xlPaperA4 '返回或设置纸张大小。可读写 XlPaperSize。
        .FirstPageNumber = xlAutomatic '返回或设置打印指定工作表时第一页的页号。如果设为 xlAutomatic,则 Microsoft Excel 采用第一页的页号。默认值为 xlAutomatic。Long 类型,可读写。
        .Order = xlDownThenOver '返回或设置一个 XlOrder 值,该值代表 Microsoft Excel 打印一张大工作表时用于对页进行编号的顺序。
        .BlackAndWhite = False '如果指定文档中的元素以黑白方式打印,则该属性值为 True。Boolean 类型,可读写。
        .Zoom = False '自动缩放,它代表一个数值在 10% 到 400% 之间的百分比,也可以直接=95即为缩放到原来的95%
        .FitToPagesWide = 1 '调整为1页
        .FitToPagesTall = 1 '调整为1页高,=false时为N页高
        .PrintErrors = xlPrintErrorsDisplayed '设置或返回一个 XlPrintErrors 常量,该常量指定显示的打印错误类型。该功能允许用户在打印工作表时取消错误显示。可读写。
        .OddAndEvenPagesHeaderFooter = False '如果指定的 PageSetup 对象的奇数页和偶数页具有不同的页眉和页脚,则该属性值为 True。Boolean 类型,可读写。
        .DifferentFirstPageHeaderFooter = False '如果在第一页使用不同的页眉或页脚,则为 True。可读/写 Boolean 类型。
        .ScaleWithDocHeaderFooter = True '返回或设置页眉和页脚是否在文档大小更改时随文档缩放。可读/写 Boolean 类型。
        .AlignMarginsHeaderFooter = True '如果 Excel 以页面设置选项中设置的边距对齐页眉和页脚,则返回 True。可读/写 Boolean 类型。
 
    End With
    Application.PrintCommunication = True '恢复打印机的通信
End Sub



分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。