2009-11-02

FileMaker Pro 5/5.5/6 でファイル名を指定して PDF 形式で印刷を実行する方法

 FileMaker Pro 7 以降では、「レコードの保存/送信」を使うことによってレコードを PDF 形式で保存できるようになっていますが、それより前のバージョンでは別途 PDF ドライバを入手して印刷コマンドから PDF 保存をする必要があります。

 今回は、FileMaker Pro 5/5.5/6 を使って PDF 形式ファイルを自動作成し、そのファイルに独自の名前を付ける方法について説明します。

【用意するもの】
1. PDF ドライバ
 プリンタドライバと同様、PDF ドライバと FileMaker Pro の相性が合わないことも考えられますので、デモ版や無料版が利用可能であれば、それを利用することをお勧めします。

 実験で FileMaker との相性がいまいち合わなかったドライバ
 Primo PDF --- 自動化の際にユーザダイアログが必ず表示されてしまうので、連続実行には不向き。
 瞬簡PDF3 --- 処理の連続実行、大量処理時に FileMaker Pro がクラッシュする。

 当方のテストで比較的安定したパフォーマンスを記録したのは、PDFCreator だったので、今回は PDFCreator を使います。
PDF Creator の詳細とダウンロードはこちら

 ただし、FileMaker 側でループによるバッチ処理で PDF 作成を行うと、サイズの比較的大きいファイルを処理中に次のループが回ってしまうという現象が起こり、それによってデータの一部が欠けた PDF ファイルが作成されてしまうことがあります。
 FileMaker 側でループ待ち時間を調整することでこういったデータ欠損のあるファイルが発生することを回避することはある程度できますが、それでも FileMaker Pro とプログラム連携をさせる時点で 100% 安定したパフォーマンスが得られるわけではないことは念頭に入れておくと良いでしょう。

2. PetaExecute プラグイン
 MS-DOS コマンドを実行したときの戻り値をこのプラグインで取得します。
 PetaExecute の情報およびダウンロードはこちら

【操作手順】
1. PDFCreator をインストールし、Options 画面の Auto-save 画面で次のように設定を行います。



1) [Use Auto-save]にチェックを付けます。
2) [Filename]に任意の一時ファイル名を英字で入力します。この名前は FileMaker 側でも同じものを指定する必要がありますので、分かりやすいものがよいでしょう。
3) [Use this directory for auto-save]にチェックを付け、その下のボックスにファイルの保存先を指定します。この保存先のパス名も FileMaker 側で指定する必要があります。

2. PetaExecute プラグインを FileMaker Pro のインストールディレクトリ配下の System フォルダにコピーし、FileMaker Pro を起動してこのプラグインが有効になっていることを確認します。


 処理の流れはざっとこんな感じです。
1) 印刷実行。
2) 1) で PDF ドライバを選択した場合は、一時ファイルを所定の名前に変更(この例では PDF_本日の年月日.pdf)。

 特に留意していただきたいのは、一時ファイルが作成されるのに多少の時間がかかるため、一時ファイルがディスクに書き込まれていない段階でファイル名変更コマンド(ren コマンド)が実行されるとファイル名変更が失敗する可能性があります。
 このため、一時ファイルが作成されるまで、ファイルメーカー内で待ち時間ループを設ける必要があります。

 本操作を確認、実行するためのファイル群を用意しましたので、興味のある方はここからダウンロードしてお試しください。
PDFサンプル

【MS-DOS コマンドによる実行方法】
 PetaExecute と MS-DOS コマンドの組み合わせにより、PDF ファイルを任意の名前で変更します。
 当方で動作検証を行った結果、大量バッチ処理で安定した運用が可能であることを確認したため、基本的にはこちらの方法をお勧めします。

1. サンプルファイル PDFtest.fp5 を開き、FileMaker 環境設定のプラグインで PetaExecute にチェックが付いていることを確認します。

2. PDFCreator の一時ファイル名とファイルの保存先を FileMaker 側にも指定します。
(画面下部の[VBSファイルパス]はここでは使いません。)


3. “日記へ”ボタンをクリックして日記内容を入力し、“印刷”ボタンを押し、プリンタとして PDFCreator ドライバを選択して印刷します。
4. 1. で指定したファイルの保存先ディレクトリに PDF ファイルが作成されていれば成功です。

 このスクリプトの仕組みは、スクリプトメニューより「日記印刷_DOS」を開いて参照してください。

【VBScript による実行方法】
 前述の MS-DOS コマンドによる実行方法と比べるとバッチ処理の安定性が低下する可能性がありますが、VBScript の方が MS-DOS コマンドより細やかなファイル操作が可能ですので、ファイルシステムの詳細設定を兼ねながらファイル操作を行いたい場合にはこちらの方法が適していると言えます。
 今回のサンプルスクリプトでは、実行結果が MS-DOS コマンドによる方法と同様になるように VBScript を組んであります。ただ一箇所異なる点は、既存ファイルのバックアップ機能が用意されている点です。

1. サンプルファイル PDFtest.fp5 を開き、FileMaker 環境設定のプラグインで Local Data Access コンパニオンと PetaExecute にチェックが付いていることを確認します。
(VBScript でエラーが発生した場合に、FileMaker にエラーを返すために Local Data Access コンパニオンを有効にしておく必要があります。)

2. PDFCreator の一時ファイル名とファイルの保存先を FileMaker 側にも指定します。
[VBSファイルパス]には、今回の記事で配布しているサンプルアーカイブに用意されている PDFrename.vbs ファイルを格納するディレクトリを指定します。


3. “日記へ”ボタンをクリックして日記内容を入力し、“印刷VBS”ボタンを押し、プリンタとして PDFCreator ドライバを選択して印刷します。
4. 1. で指定したファイルの保存先ディレクトリに PDF ファイルが作成されていれば成功です

 このスクリプトの仕組みは、スクリプトメニューより「日記印刷_VBS」を開いて参照してください。

2009-07-07

Windows Server 2003 で Windows ファイアウォールを開こうとすると、Ipnat.sys 関連のエラーメッセージが表示される

 Windows Server 2003 で Windows ファイアウォールを開こうとすると、以下のようなメッセージが表示されてファイアウォール管理画面を開けないことがあります。

「ネットワークアドレス変換コンポーネント(Ipnat.sys)を使用している可能性がある、別のプログラムまたはサービスが実行中であるため、Windowsファイアウォールを実行できません。」

 これは環境に「ルーティングとリモートアクセス(RRAS)」サービスがインストールされている場合にプロセスの一部(Ipnat.sys)が Windows ファイアウォールのプロセスと競合を起こすために発生するエラーのようです。

同現象でお困りの方は、以下の手順で RRAS を完全に無効化することで対応できる可能性があります。

1. 「管理ツール」→「サービス」より、Routing and Remote Access を停止させ、無効にします。
2. 「管理ツール」→「コンピュータの管理」を選択し、左ペインより「サービスとアプリケーション」を選択します。
 右ペインで、「ルーティングとリモートアクセス」を右クリックし、そこに表示されるサブメニューより、「ルーティングとリモートアクセスの無効化」を選択します。

 上記 2. の手順は「サービス」からは無効化できないので、注意が必要です。

2009-03-11

EdMax のデータを Outlook Express に移行する方法

EdMax のデータを Outlook Express に移行するには少々コツが要ります。

【概要】
 EdMax のメールデータは、本文テキストと添付で保存場所が分かれている。添付ファイルについては専用のフォルダに添付データがそのまま格納されている。
 これに対し、Outlook Express のメールデータはすべて .mdb という一つのデータベースに格納されており、個々のメールは .eml という形式のファイルで取り出すことができる。また、添付ファイルもこの .eml に一緒に保存されている。

 つまり、EdMax メールの本文と添付ファイルを一つにマージさせて、それを .eml 形式に変換する操作によって移行作業を行う。

【操作方法】
1. EdMax のメールを UNIX MBOX 形式でエクスポートします。
 移行対象のメールを選択した状態で、「ファイル」→「エクスポート」の順に選択するとエクスポート用のダイアログが開きますので、次のように指定します。ファイル名には適当なものを付けてください。



(重要)[形式]には「再構成して保存(添付ファイル付き)」を選択してください。これによって、添付ファイルが本文にマージされて書き出されます。

 .mbx という拡張子を付けて“保存”をクリックします。(上記の例では exportmail.mbxと指定する)。このファイルには、選択したすべてのメールが格納されています。

 メールの添付ファイルが大きすぎたり、指定したメールの総容量が大きすぎる場合(最大サイズは 200MB の模様)、エクスポートに失敗しますので、適度なところで区切りながらエクスポートすることをお勧めします。

2. メール変換ツールを使って .mbx 形式のファイルを .eml 形式に分割変換します。
ここでは MailExp というツールを使います。今回は以下のサイトで配布されているものを使用しました。

http://www2.lint.ne.jp/~lrc/in_mailutl.htm

使い方は、入力側に .mbx ファイル(変換前のエクスポート済ファイル)を指定し、出力側に出力先のフォルダとファイル形式を指定します。ファイル形式は .eml にしてください。
“変換+分割 開始”ボタンをクリックすると、メールが連番で分割されます。

3. 2. で分割された .eml ファイル群を、Outlook Express の適切な場所(受信フォルダ、送信済フォルダなど)にドラッグします。

この操作を行うと、.eml ファイルが Outloox Express に追加され、Outlook Express で読み取りできるようになります。