この記事で扱っていること
- Wordに複雑な区切りの表を作る方法
を紹介しています。
注意:すべてのエラーを確認しているわけではないので、記事の内容を実装する際には自己責任でお願いします。また、エラー配線は適当な部分があるので適宜修正してください。
LabVIEWからMicrosoft OfficeのWordを操作するには、アドオンソフトであるReport Generation Toolkitを使用するのが便利です。
用意されている関数を使用することでテキストや表、グラフをWord上に用意したり、決められた形式のレポートを作成することができます。
このうち、本記事では表の作成に注目しています。
用意されている関数では、簡易的な表、例えば3行5列、のような決まった形の表しか作れません。
でも、ある行には3列だけど次の行は2列、みたいな変則的な表形式にしたい場合もありえるわけで、そんな場合にどのように組めばいいかを紹介しています。
どんな結果になるか
Wordファイルに対して、区切り位置が不規則な表を作成することを目的とします。
特定のユーザーインタフェースを持っている必要があるわけではないのでフロントパネルには何もなく、実行すると以下のような表を作成することができます。

察しがいい方は気づいているかもしれませんが、最初からこのような変則的な並びの表を作るのではなく、セルの結合を行ってこういった形の表に仕立てていきます。
プログラムの構造
使用する関数はReport Generation Toolkitに含まれている関数で、特に今回はMerge Cellsという関数を多用します。
上に書いたように、アプローチとしては最初にベースとなる「規則的な」区切りの表を用意しておき、任意の位置のセルを適宜結合していく作業をプログラム的に行うだけです。
ベースになる表はEasy Tableの関数で作れます。

以下がプログラムの例です。
どこのセル同士を結合するかを指定するたびにMerge Cellsの関数を使用することになります。

各関数の動きを順にみていきます。一番最初のCreate ReportはWord形式であることを指定しているだけなのでいいとして、まずはEasy Tableの関数を使って表を作成します。
注意点としては、作成する行や列の数より一つ少ない数の配列を配列初期化で作成して行、列それぞれ指定していく点です。
例えば、3行4列の場合には行方向には2つの要素を持った配列を、列方向には3つの要素を持った配列をEasy Tableに入力します。

なお、行や列の入力はそれぞれrow headersおよびcolumn headersとして指定している状態ですが、data入力に2次元配列を渡しても同じことができます。
むしろ後々で入力するのは表へのdataなので、下の図の右のdata入力に2次元配列を渡すやり方の方が自然な方法とも言えます。

次に、表のセルの大きさを指定します。行方向と列方向に対して指定することができます。
下の図の結果は見にくいですが、2列目と4列目の横幅が、1列目や3列目と比べて若干長くなっています。

次にセルの結合を行います。結合したいセルの行と列の情報を開始セル、終了セルそれぞれ指定します。
ここで、行と列の指定は0から数え始めるということに注意が必要です。
例えば1行目2列のセルと1行目4列のセルまでを結合する場合には、開始セルが(0,1)、終了セルが(0,3)と指定する必要があります。
また、セルをまたいだ場合(この例で言うと1行目3列のセルがまたがれている状態)、自動的に2列目と3列目、3列目と4列目の間の区切りがなくなります。

あとは全て同じ要領です。次に区切りを無くして結合したいセルを新たに選択します。

この操作を、もう結合しなくてもいいという状態になるまで行います。

表の結合の編集が終わったら、表にデータを書き込んでいきます。

他の結合例もいくつか紹介します。
セルの指定の仕方を変えれば、縦方向にも結合することができます。

表のサイズが変わっても考え方は変わりません。

似たような操作を繰り返して表を作成する場合には、一連の処理をForループに入れて操作することもできます。ただ、Forループで繰り返せるような処理はたいてい、開始、終了セルの指定の仕方次第で繰り返しをさせなくても一発で結合セルを指定できる場合がほとんどだと思いますが・・・。

テンプレートを使う
上で紹介した方法はあくまでLabVIEWのプログラム的に表を作成する方法でした。この方法でもちゃんと組めば複雑な行と列の組み合わせを持つ表を作ることができるのですが、それでも考えるのが面倒な場合には、あらかじめWord側でその複雑な表を作っておいてこれをテンプレートとして使用する方法もあります。
WordのテンプレートをLabVIEWで使用する方法は以下の記事で紹介しています。
この記事では、LabVIEWのアドオンであるReport Generation Toolkitの関数で用意されている簡単な表よりも複雑な表を作成する方法を紹介しました。
考え方さえわかれば後はひとつずつ考えて組めば望みの形式の表を作れると思うので、参考にしてもらえればうれしいです。
ここまで読んでいただきありがとうございました。
コメント