首页 > 代码库 > wdVBA正则表达式提取题目
wdVBA正则表达式提取题目
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 = http://www.mamicode.com/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 = http://www.mamicode.com/StartIndex + Index">>>>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
wdVBA正则表达式提取题目
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。