我必须迭代大循环并使用Case Select结构。我首先遍历请求的参数(通常大约为10),然后对于每个匹配,我循环遍历文件列表(大约10k)。代码具有以下结构,但有更多案例。
For i = 1 To dNumColumns Step 1
Debug.Print(CStr(Now() & " Column: " & UCase(vInHeaders(1,i))))
Select Case UCase(Cols(1,i))
Case "NAME":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Name : row += 1
Next
Case "DATE":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Date : row += 1
Next
Case "PATH":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Path : row += 1
Next
Case "RIGHTS":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Rights : row += 1
Next
Case "AUTHOR":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Author : row += 1
Next
Case "TYPE":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Type : row += 1
Next
Case "VERSION":
row = 1
For Each t In vT
vTestsValues(row, i) = t.Version : row += 1
Next
Case Else
row = 1
For Each t In vT
vTestsValues(row, i) = "ERR"
row += 1
Next
End Select
dNumColumns is a Variant Array, containing Strings;
vT is a Variant Array containing a Document Object
将这些结果添加到vTestsValues的最有效方法是什么?已经尝试过“For Each t in vT”(通常有10k项)并在其中嵌套“For i = 1 To dNumColumns”循环以选择Cases并获得稍慢的性能。任何提示都表示赞赏。
答案 0 :(得分:0)
For Each t In vT
vTestsValues(row, i) = CallByName(t, Cols(1,i), vbGet) : row += 1
Next