談云康 瞿榮華 李 娟 尹小輝
四川管理職業(yè)學(xué)院 四川成都 611732
利用網(wǎng)絡(luò)平臺(tái)進(jìn)行在線考試時(shí),經(jīng)常需要重新對(duì)試題進(jìn)行組織。為了實(shí)現(xiàn)自動(dòng)化組題,多數(shù)課題基于傳統(tǒng)的數(shù)據(jù)庫(kù)組卷系統(tǒng)進(jìn)行研究。
研究的對(duì)象大多數(shù)是建立在試題庫(kù)的基礎(chǔ)上通過選題、組題和組卷算法而實(shí)現(xiàn)組卷。為了實(shí)現(xiàn)對(duì)試卷進(jìn)行程序化編制,本文試驗(yàn)并給出了一種操作Word文檔的算法,達(dá)到組卷的目的。
下面是合并Word文檔中的表格的主要代碼,跳過表頭和空行進(jìn)行復(fù)制:
首先計(jì)算表的數(shù)目
intTables=docCopy.Tables.Count
'如果文檔中至少有一張表格
Do While intTables>=1
With docCopy.Tables(intTables)'在 intTables表中
'在表格末尾添加新行
For Each rowTable In.Rows
'對(duì)每行單元格數(shù)組分配空間
intCells=rowTable.Cells.Count
'默認(rèn)數(shù)組的下標(biāo)從0開始
'DimstrCells(intCells),則聲明了intCells+1個(gè)空間的數(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è)置非空行標(biāo)志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)的下標(biāo)從1開始,所以使用 數(shù)組索引從1開始較方便 intI=celRow.ColumnIndex '列下標(biāo)計(jì)數(shù)器 '注意輸入數(shù)據(jù)行存儲(chǔ)的數(shù)組下標(biāo)是由數(shù)據(jù)列數(shù)和標(biāo)志確定的 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)過試驗(yàn),使用這種算法,能得到我們所需要的結(jié)果試題。3.結(jié)語(yǔ)