<エクセルのレイアウトを自動修正>

ファイルメーカーProでシステムを作成しても、集計表などはエクセルに書き出して利用などされている方も多いようです。しかしファイルメーカーProからエクセル形式でデータを書き出しても、そのまま利用できる状態ではなくレイアウト修正が必ず必要になります。ファイルメーカーProからエクスポートの際に自動でレイアウト修正を行う方法はいろいろありますが、1つは木下先生著書の「FileMaker データベース開発テクニック」でも紹介されているXSLTを使った方法や、これから紹介するVBSを使った方法があります。

※以下はWindowsXP、ファイルメーカーPro 8.5 Advanced、Excel 2003インストール環境でのご説明となります。

 

 ■VBSを使ったエクセルシートのレイアウト自動修正


通常のエクスポート機能でExcel形式の書き出しを行うと上記のようになり、
印刷などをする場合、レイアウトの修正が必要となってしまいます。


上記のエクセルデータを書き出した後にグローバルフィールドに保存していたVBSのプログラムを
書き出して、それを実行するようなスクリプトを組んでいます。


VBスクリプトは以下のようになります。

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Open("C:\test01.xls")
Set objWorksheet = objWorkbook.Worksheets("Sheet1")

'罫線を設定します
objWorksheet.Range("A1:G4").Borders.LineStyle = 1
objWorksheet.Range("A1:G4").Borders.Weight = 2

'列の幅を設定します
objWorksheet.Columns("A:A").ColumnWidth = 18
objWorksheet.Columns("B:G").ColumnWidth = 12

'セルに色を設定します
objWorksheet.Range("A1:G1").Interior.ColorIndex = 44
objWorksheet.Range("A2:A4").Interior.ColorIndex = 36

'行の項目名を中央揃え、数値を3桁の位取り表示に設定します
objWorksheet.Range("A2:A4").HorizontalAlignment = -4108
objWorksheet.Range("B2:G5").NumberFormatLocal = "#,##0_ ;[赤]-#,##0 "

'セルの選択位置をA9へ移動させます
objWorksheet.Range("A9").Select

objExcel.DisplayAlerts = False
objWorkbook.SaveAs "C:\test01.xls"

Set objExcel = Nothing

ボタンを押すとエクセル形式でエクスポート後、以下のようにVBスクリプトによって修正されます。



グローバルフィールドにVBスクリプトを保存しておき、スクリプトで書き出して使用することで、共有のクライアント端末上でも自由に実行できるようになります。またグローバルフィールドでなく、VBスクリプト自体を管理するテーブルを作成して、いろいろなフォームのVBスクリプトを保存しておき、実行するときにスクリプトで選択して書出し、実行なども可能でしょう。もしくはVBスクリプトをファイルメーカーPro内の計算式で可変させて、スクリプトを実行することもできます。(サンプルでは保存場所はわかりやすいようにCドライブ直下に保存するように作成しています)

サンプルプログラム vbs_cellcontrol.zip(7.88KB) ウィルスチェック済  解凍してからお使い下さい。


エクセルグラフも同じようにVBSで自動作成表示が可能です。「グラフ表示について」でご説明致します。


Copyright FINETECH All rights reserved.