2017-07-31 16 views
0

私はVBAを使用して、csvファイルからWordで表を作成します。多くのテーブルが存在する可能性があるためWordで表のセルを色付けする方法が速く

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,234 6,789 &4,321e+05 
&-5,55 1,999 0,00 
....... 

:これらの値のために、私は、元のCSVファイル内の文字「&」を使用するように、いくつかの細胞は、色付けされなければなりませんテーブルがかなり大きくなることがありますが、これは時には非常に遅いです。それを行うより速い方法がありますか?

+1

ドキュメントからセルを1つずつ読み込み、いくつかの関数を実行してその値をペイントして置き換えるため、処理が遅くなります。最良の方法は、すべてのテーブルデータを配列に変換し、マクロを実行し、別の配列にペイントされるすべてのセルのアドレスを保存し、その配列をループしてセルをペイントし、そこから特殊文字を削除することです。配列内のループは、ループスルー範囲よりもはるかに高速です。 – Ibo

+0

@Ibo提案をいただき、ありがとうございます。 –

+0

結果をお知らせください! – Ibo

答えて

0

これは画面の更新をオフにします。つまり、マクロの実行は視覚的に表示されませんが、速度が向上します。

Application.ScreenUpdating = False 
+0

はい、使用しますが、ファイルを作成するのに最大15分かかります。 –

関連する問題