2017-07-31 49 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分钟。 –