談云康 瞿榮華 李 娟 尹小輝
四川管理職業(yè)學(xué)院 四川成都 611732
利用網(wǎng)絡(luò)平臺進行在線考試時,經(jīng)常需要重新對試題進行組織。為了實現(xiàn)自動化組題,多數(shù)課題基于傳統(tǒng)的數(shù)據(jù)庫組卷系統(tǒng)進行研究。
研究的對象大多數(shù)是建立在試題庫的基礎(chǔ)上通過選題、組題和組卷算法而實現(xiàn)組卷。為了實現(xiàn)對試卷進行程序化編制,本文試驗并給出了一種操作Word文檔的算法,達到組卷的目的。
下面是合并Word文檔中的表格的主要代碼,跳過表頭和空行進行復(fù)制:
首先計算表的數(shù)目
intTables=docCopy.Tables.Count
'如果文檔中至少有一張表格
Do While intTables>=1
With docCopy.Tables(intTables)'在 intTables表中
'在表格末尾添加新行
For Each rowTable In.Rows
'對每行單元格數(shù)組分配空間
intCells=rowTable.Cells.Count
'默認數(shù)組的下標從0開始
'DimstrCells(intCells),則聲明了intCells+1個空間的數(shù)組
'讀每行中的單元格
For Each celRow In rowTable.Cells
intI=celRow.ColumnIndex
'刪除多余回車符
strCells(intI)=Replace(strCells(intI),ChrW(7),"",1,-1,vbBinaryCompare)
'刪除單元格內(nèi)結(jié)尾字符:
AscW(Right(strCells(intI),1))=7
'設(shè)置非空行標志strCells(0)
ElseIf strCells(intI)<>""Then
strCells(0)="NotEmptyLine"
End If
'復(fù)制行
If rowLast.Cells.Count '在新行的末單元格寫入復(fù)制表格所在的文件名 rowLast.Cells(rowLast.Cells.Count).Range.Text=_ Replace(docCopy.Name,strExtFileName,"",1,-1,vbBinaryCompare) '寫每行中的單元格 For Each celRow In rowLast.Cells '因集合循環(huán)的下標從1開始,所以使用 數(shù)組索引從1開始較方便 intI=celRow.ColumnIndex '列下標計數(shù)器 '注意輸入數(shù)據(jù)行存儲的數(shù)組下標是由數(shù)據(jù)列數(shù)和標志確定的 If intI>UBound(strCells)Then '如果輸入數(shù)組中的值已復(fù)制完,不再寫入新行中 Exit For End If celRow.Range.Text=strCells(intI) Next celRow '設(shè)置格式:不加粗 rowLast.Range.Bold=False End If Next rowTable '復(fù)制行 End With intTables=intTables-1 Loop '讀表格的一行 經(jīng)過試驗,使用這種算法,能得到我們所需要的結(jié)果試題。3.結(jié)語