2017-07-31 52 views
0

我使用VBA從csv文件中在Word中創建表格。一些細胞應該是彩色的,所以這些值我用原來的CSV字符「&」:在Word中更快速地上色表格單元格

....... 
1,234 6,789 &4,321e+05 
&-5,55 1,999 0,00 
....... 

然後我使用過的表格單元格循環:

Set tbl = ActiveDocument.Tables(ActiveDocument.Tables.Count) 
    For Each ce In tbl.Range.Cells 
     a = ce.Range.Text 
     If InStr(a, "&") Then 
      a = Replace(a, "&", "") 
      ce.Range.Text = a 
      ce.Shading.BackgroundPatternColor = wdColorGray20 
     End If 
    Next 

因爲可以有很多表,桌子可能相當大,有時候很慢。有沒有更快的方法來做到這一點?

+1

它很慢,因爲您正在逐個讀取文檔中的單元格,並運行一些函數來繪製和替換它們的值。最好的辦法是將所有的表格數據轉換成一個數組,然後運行宏並保存所有將被繪製在另一個數組中的單元格的地址,然後遍歷該數組並繪製單元格並從中刪除特殊字符。數組中的循環比遍歷範圍的循環要快得多。 – Ibo

+0

@Ibo謝謝你的建議,我會試試這個。 –

+0

請讓我們知道結果! – Ibo

回答

0

這將關閉屏幕更新,這意味着您不會在視覺上看到宏運行,但它有助於提高速度。

Application.ScreenUpdating = False 
+0

是的,我使用它,但創建文件仍需要15分鐘。 –