20170706wdVBA正则表达式提取题目

Public Sub GetContents()
    Dim Reg As Object
    Dim Matches As Object
    Dim OneMatch As Object
    Dim Index As Long
    Dim TimeStart As Variant
    TimeStart = VBA.Timer
    Set Reg = CreateObject("Vbscript.RegExp")
    With Reg
        .Pattern = "^\s*?((?:[^\r]*?\d+题[^\r]?\s*?[^\r]*?\s*?)?\d*[\.,、.](?:[^\r\n]*?\r?[\r\n]+?){1,4}?)\s*?" & _
                   "(A[\.,、.].*?)\s+?" & _
                   "(B[\.,、 .].*?)\s+?" & _
                   "(C[\.,、.].*?)\s+?" & _
                   "(D[\.,、.].*?)\s*?" & "\r?[\r\n]+"
        .MultiLine = True
        .Global = True
        .IgnoreCase = False
    End With

    Dim FilePath As String
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = False
        .InitialFileName = ActiveDocument.Path
        .Title = "请选择单个Excel工作簿"
        .Filters.Clear
        .Filters.Add "Excel工作簿", "*.xls*"
        If .Show = -1 Then
            FilePath = .SelectedItems(1)
        Else
            MsgBox "您没有选中任何文件夹,本次汇总中断!"
            Exit Sub
        End If
    End With

    Dim xlApp As Object
    Dim wb As Object
    Dim sht As Object
    Dim StartRow As Long
    Dim StartIndex As Long

    Set xlApp = CreateObject("Excel.Application")
    Set wb = xlApp.workbooks.Open(FilePath)
    Set sht = wb.worksheets.Add(After:=wb.worksheets(wb.worksheets.Count))
    sht.Name = "提取记录" & wb.worksheets.Count - 1
    sht.Range("A1:H1").Value = Array("储存序号", "引言题干", "A选项", "B选项", "C选项", "D选项", "正确答案", "配图名称")

    With sht
        StartRow = .Range("A65536").End(3).Row
        StartIndex = StartRow - 1

        Set Matches = Reg.Execute(ActiveDocument.Content.Text)
        Index = 0
        For Each OneMatch In Matches
            Index = Index + 1
            ''Debug.Print "Question Index  " & N & "   :   " '; OneMatch
            For i = 0 To OneMatch.submatches.Count - 1
                .Cells(StartRow + Index, 1).Value = StartIndex + Index
                .Cells(StartRow + Index, 2).Value = OneMatch.submatches(0)
                .Cells(StartRow + Index, 3).Value = OneMatch.submatches(1)
                .Cells(StartRow + Index, 4).Value = OneMatch.submatches(2)
                .Cells(StartRow + Index, 5).Value = OneMatch.submatches(3)
                .Cells(StartRow + Index, 6).Value = OneMatch.submatches(4)
                'If i <> 0 Then
                'Debug.Print ">>>>Option Index"; i; "  :   "; OneMatch.submatches(i)
                'Else
                '  Debug.Print ">>>>Question Index  0 "; "  :   "; OneMatch.submatches(i)
                ' End If
            Next i
            ' If N = 17 Then Exit For
        Next

        With .usedrange
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlCenter
            .WrapText = True
        End With

        If ShowPicName Then xlApp.WorksheetFunction.Transpose (PicName)

        .usedrange.Columns.AutoFit
    End With


    wb.Close True
    xlApp.Quit
    Set sht = Nothing
    Set wb = Nothing
    Set xlApp = Nothing

    Debug.Print VBA.Timer - TimeStart; "秒"
    Set Reg = Nothing
End Sub

  

转载于:https://www.cnblogs.com/nextseven/p/7129066.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
计算机试题库系统,是将编好的试题、答案、编码事先存入计算机的外部存储器(硬盘、光盘等),使用时,通过软件的控制,按照一定的方式和规则,将试题抽取、组合,形成试卷,打印输出。 使用计算机试题库系统可以大大提高工作效率,不论是抽题、组卷,还是提取答案、打印试卷,都非常迅速。同时,用计算机随机抽取试题,可以排除人为因素和误差,使试题的范围、难度、题型标准一致,试卷规范,保证教育测量的客观、公正。 本试题库系统由两部分组成:一是试题库本身(试题、答案、编码),二是试题库管理软件。试题库是系统的基础、原材料,软件是系统的调度者、加工者。 一、主要特点 1.直接利用Office平台 可以使用Word、Excel的所有功能,特别是它的编辑、排版、打印功能。 由于Word、Excel是人们最为熟悉、用户最为广泛的软件平台,用其内嵌的编程语言VBA进行二次开发得到的应用软件,既可以使大量繁琐、重复操作的自动化,提高工作效率和应用水平,同时又不改变原有的界面风格、系统功能和操作方式。人们不必花时间去适应另外一种软件环境,学习另外一种操作方式,大大降低使用门槛,提高了软件的可用性。 2.拷贝即用,绿色软件 本试题库管理系统包含一个Word文档和一个Excel工作簿文件(均带有VBA程序),只要将这两个文件拷贝到任何装有Office 2002以上版本系统的计算机中就可以直接使用,不用时可直接删除。不像一般软件那样包含大量系统文件,要进行安装和卸载。 3.可以管理多媒体试题库 由于试题、答案、试卷、参数全部在Word文档中,所以可以方便地处理文字、图形、表格、公式、符号,甚至声音、视频等信息,管理多媒体试题库。 4.在理论和技术上具有先进性 利用教育测量理论的最新研究成果,合理设置试题参数,动态制定组卷策略,使题库科学、合理。同时,采用先进的软件技术和算法,提高了时空效率,增加了通用性、可维护性和可移植性。 二、基本功能 1.题库维护 本软件作为一个通用试题库管理系统,可以管理各种试题库。每一门课程的试题库为一个Word文档,其中包括若干道试题以及其答案。对每一道试题的参数、题干和答案,可直接在Word环境中进行增、删、改、排等操作。可随时检测是否有重复题。为醒目起见,系统可自动将试题和答案的参数涂上不同颜色。可对试题和答案的参数进行有效性检验。 2.信息统计 统计整个题库中各章、各题型、各难度的试题数量、分数,总题量,总分数。指定组卷时各章、各题型、各难度的试题的抽取数量后,系统可统计出抽取的总题数,总分数。 3.生成试卷 按照预先设置或临时制定的组卷策略,即各章、各题型、各难度的抽题数量,进行随机或排他抽题,组成试卷和答案文档。 4.试卷加工 可以用Word本身的功能对试卷进行编辑、排版、打印等操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值