クリック画像の実寸表示

段ボール箱を机にした猫 ファイルメーカー(filemaker)のちらしの裏のメモ書き

TOP  >  FileMakerからMBSプラグインを利用してExcelファイルを作成する
作成日:2025年04月14日

FileMakerからMBSプラグインを利用してExcelファイルを作成する

イメージイラスト
にゃん太

どうも、にゃん太です

前回はVBSを利用したExcelファイルの作成方法について書きました

しかし、最後に書いた通りVBSは将来的に廃止されるので、現在の選択肢として選ぶのはあまり望ましくありません

今回のメモでは、別の方法としてMBSプラグインを利用して作成する方法について書いてきます


MBSプラグイン

MBSプラグインは、FileMakerのプラグインで現時点で7500以上の関数を使用でき、今なお追加開発されています
詳しく知りたい場合はこちらのサイトを参照してください
この関数の中にはExcelファイルの操作をする機能も含まれており、FileMakerのデータを利用してテンプレートに流し込む事が可能です
手間を厭わなければ、新規ファイルを作成して、罫線を引く、色を塗る、計算式を書く、行列の幅を変えるなどの加工もできます
エクセルファイルの加工処理にはLibXLも必要となり、そこそこのお値段になってしまう点だけが問題ですが、かなり幅広い操作が可能です

MBSプラグインを使用したExcelファイルの作成

では、VBSでExcelファイルの作成を行った時のデータを使用して、テンプレートに流し込む処理を行ってみます

MBS認証

# ################################################## # MBSブラグインの認証 # ################################################## # MBSプラグインが登録されていない場合は終了 変数を設定 [$plugin; 値: Get ( インストールされた FM プラグイン )] If [PatternCount ( $plugin ; "MBS Plug-In" ) = 0] カスタムダイアログを表示 ["ERROR"; "MBSプラグインがインストールされていません¶インストール後、再起動して下さい"] ウインドウを閉じる [現在のウインドウ] End If # 認証済みなら処理不要 If [MBS( "IsRegistered" )] 現在のスクリプト終了 [テキスト結果: ] End If # MBSプラグインの認証 変数を設定 [$Register; 値: MBS("Register"; authInfo::MBS_LicenseeName; authInfo::MBS_Component; authInfo::MBS_LicenseType; authInfo::MBS_ExpireMonth; authInfo::MBS_SerialNumber )]

LibXL認証

# ################################################## # MBSプラグインのXL機能使用の為のDLL読み込み # ################################################## # LibXL認証済みなら処理不要 変数を設定 [$res; 値: MBS( "XL.IsInitialized" )] If [$res] 現在のスクリプト終了 [テキスト結果: ] End If # LibXLのDLLファイルが存在しない場合は終了 変数を設定 [$path; 値: Middle ( Get ( FileMaker パス ) ; 2 ; Length ( Get ( FileMaker パス ) ) - 1 ) & "Extensions/libxl.dll"] If [not MBS( "Files.FileExists" ; $path )] カスタムダイアログを表示 ["ERROR"; "DLLの読み込みに失敗しました"] ウインドウを閉じる [現在のウインドウ] End If # LibXLの認証 変数を設定 [$Initialize; 値: MBS( "XL.Initialize"; authInfo::LibXL_LibPath; authInfo::LibXL_LicenseName; authInfo::LibXL_LicenseKey )] If [$Initialize ≠ "OK"] カスタムダイアログを表示 ["ERROR"; "DLLの認証に失敗しました¶体験版で実行します"] End If

Excel作成

# ################################################## # Excelテンプレートへの流し込み # ################################################## スクリプト実行 [指定:一覧から;「MBS認証」; 引数: ] スクリプト実行 [指定:一覧から;「LibXL認証」; 引数: ] # テンプレートファイルを開く 変数を設定 [$xl; 値: MBS( "XL.LoadBook" ; data::テンプレート )] # テキストの流し込み 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 3; 4; data::名前 )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 5; 4; data::ふりがな )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 7; 4; data::生年月日 )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 9; 4; data::血液型 )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 11; 4; data::趣味 )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 13; 4; data::特技 )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 19; 2; data::自己PR )] 変数を設定 [$res; 値: MBS( "XL.Sheet.CellWriteText"; $xl; 0; 28; 2; data::フリースペース )] # 画像サイズと比率取得 変数を設定 [$baseWidth; 値: GetContainerAttribute ( data::写真; "width" )] 変数を設定 [$baseHeight; 値: GetContainerAttribute ( data::写真; "height" )] 変数を設定 [$ratio; 値: $baseHeight / $baseWidth] # 画像配置 変数を設定 [$pictureID; 値: MBS( "XL.Book.AddPictureContainer"; $xl; data::写真 )] # 配置セルのサイズ 変数を設定 [$width; 値: MBS( "XL.Sheet.GetColWidth"; $xl; 0; 16 ) * 9.43 * 6 - 2] 変数を設定 [$height; 値: MBS( "XL.Sheet.GetRowHeight"; $xl; 0; 3 ) * 4 / 3 * 8 - 2] # 画像の比率に応じてリサイズ If [$ratio > 1.293] 変数を設定 [$res; MBS( "XL.Sheet.SetPictureWithSize"; $xl; 0; 3; 16; $pictureID; $height * $ratio; $height; ($width - $height * $ratio) / 2; 1; 0 )] Else 変数を設定 [$res; MBS( "XL.Sheet.SetPictureWithSize"; $xl; 0; 3; 16; $pictureID; $width; $width * $ratio; 1; ($height - $width * $ratio) / 2; 1 )] End If # 処理結果フィールドへエクセルファイルを保存 フィールド設定 [data::作成ファイル; MBS( "XL.Book.Save" ; $xl; "result.xlsx" )] # エクセルファイルをメモリから解放する 変数を設定 [$res; MBS( "XL.Book.Release"; $xl )]

こちらを実行した結果が下図です
概ね問題なく配置されましたが、残念ながら自己PR欄の改行が正しく取得できていません

Excelファイルへの流し込み結果
これは、元となるテンプレートファイルの設定を変更する事で対応できます
具体的には、「折り返して全体を表示する」にチェックを入れます

Excelの設定変更
これにより、改行が正しく表示される様になります

Excelファイルへの流し込み結果(2回目)

サンプルファイル

以上でMBSプラグインを利用したExcelファイルの作成処理は終了です
中々コストが重いので実際の導入にはハードルが高いですが、かなり手軽に作成できるため非常に便利です
今回作成したファイルを公開していますので、ご興味がありましたらこちらからダウンロードしてご確認ください
ライセンスが無いと体験版での動作となってしまいますが、動き自体は分かると思いますので、是非お試しください

メモ書き終了の案内イラスト

以上で今日のメモ書きは終了です

内容はいかがでしたか?

もしご意見やご要望、誤りの指摘などありましたら、下記フォームよりお気軽にご連絡ください

ご連絡フォーム