翻訳チェックソフトの「色deチェック」は、表内の文字列の比較処理をします。
数十ページにわたる表であれば、処理スピードは速いのですが、数百ページにわたる表の場合、処理速度が遅くなります。
私はそこまで大きな翻訳案件を扱わないのですが、お客様(特許事務所)の中には、このような大きな案件を扱われているところもあります。この改善要望をいただきました。
次回のバージョンアップでは、この点を改善いたします。
この改善に使った手法を紹介します。
<目次>
(背景)
文字列の比較処理において、表をオブジェクト変数に設定して扱っていました。
この表のオブジェクトがあまりにも大きいため(数百ページ)、メモリ容量ととっていたようです。
結果、処理速度が遅くなりました。
(解決策)
表を100行ごとに分割し、分割した表の1つ1つを処理します。
処理後に、分割した表を1つの表につなげます。
この分割で用いたマクロを今回の記事で紹介します。
このマクロでできること
現在表示されている文書の先頭の表を指定した行数で分割します。
例えば850行ある表を100行ごとに分割すると、101行目、201行目、、、、から次の表になります。
結果、100行の表が8つ、50行の表が1つできます。
マクロの解説
Split メソッドを用います(10行目)。
メソッドの引数(ひきすう:オプション)は、BeforeRowだけです。
名前の通り、ここで指定した行の前で分割します。
このメソッドは、指定した行から始まる表を返しますので、それをmyTableで受け取って処理を繰り返しています。
表の分割では、SplitTableというメソッドもありますが、これはSelectionオブジェクトでしか使えません。
今回のように、対象となる表を選択せずに(Selection オブジェクトで指定せずに)表を分割する場合には、Splitメソッドがいいと思います。
マクロ
Sub 表の分割() Dim myTable As Table Const myRows = 100 ’行数 Set myTable = ActiveDocument.Tables(1) '表を分割 Do While myRows < myTable.Rows.Count Set myTable = myTable.Split(BeforeRow:=myTable.Rows(myRows + 1)) DoEvents Loop Set myTable = Nothing End Sub
キーワード
how to split table, Word VBA, Macros
関連記事
- 【Word VBA】Memsourceのバイリンガルファイル(.docx)をA4サイズに変更するWordマクロ
- 【Word VBA】Wordの表の行と列を入れ替えるWordマクロ
- 【Word VBA】Wordの表をExcelにコピペするWordマクロ
- 【Word VBA】カーソル位置のセル番号を取得するWordマクロ
- 【Word VBA】カーソル位置の行番号を取得するWordマクロ
- 【Word VBA】セル内の文字の配置を変更するWordマクロ
- 【Word VBA】入れ子の表のスタイルを設定するWordマクロ
- 【Word VBA】文書中のすべての表を選択するWordマクロ
- 【Word VBA】文書中の表を新規文書に書き出すWordマクロ
- 【Word VBA】特定の列のフォント書式を変更するWordマクロ
- 【Word VBA】特定の文字列を含むセルを着色するWordマクロ
- 【Word VBA】表の1列目を両端揃えにするWordマクロ
- 【Word VBA】表の3行目から5行目を選択するWordマクロ
- 【Word VBA】表のセルの末尾に2行追加するWordマクロ
- 【Word VBA】表のセルを結合するWordマクロ
- 【Word VBA】表のセル毎にXMLデータを取得するWordマクロ
- 【Word VBA】表の列幅を揃えるWordマクロ
- 【Word VBA】表の特定の行の列数を調べるWordマクロ
- 【Word VBA】表の直後に改行記号を挿入する
- 【Word VBA】表の行を追加・削除するWordマクロ(改良版)
- 【Word VBA】表の行を追加・削除するWordマクロ(簡易版)
- 【Word VBA】表の配置を中央揃えにするWordマクロ
- 【Word VBA】表を特定の行数で分割するWordマクロ
- 【Word VBA】表を特定の行数で分割するWordマクロ(その2)
- 【Word VBA】表中の結合されたセルを着色するWordマクロ
- 【Word VBA】表中の結合されたセルを着色するWordマクロ(その2)
- 【Word VBA】表中の結合されたセルを着色するWordマクロ(その3)
- 【Word VBA】表中の結合・分割セルの有無を判定するWordマクロ
- 【Word VBA】表内の文字数を計算するWordマクロ
- 【Word VBA】表内の文字数を計算するWordマクロ(その2)