MS Access Tips/Sample and VBA and Blog customize etc...

レポートの禁則処理とワードラップをオフにする

まず、禁則処理、ワートラップとはなんぞや、から説明します。
ごっちゃにしている方をたまに見かけますが(?)、2つは似て非なるものです。

下のレポートのプレビューのキャプチャをご覧ください。

禁則処理とワードラップの比較のプレビュー

簡単に説明すると、

禁則処理とは、日本語で、行頭にきては困る文字(」。、など)を前の一文字も含めて、次の行に送る処理のことです。

ワードラップ(WordWrap)は、英文などで、単語が改行で分割されないように、単語ごと次の行に
送る処理のことです。

禁則処理やワードラップは便利な機能なのですが、限られたスペースに出来る限り詰め込みたいときとか、オフにしたいときもあるでしょう。

難易度:

禁則処理のオフ

フォームに配置したテキストボックスには、プロパティの その他 に「禁則処理」というプロパティがあるので簡単にオンオフできるのですが、レポート上に配置したテキストボックスにはなぜかありません。

しかし、レポートを開くときのイベントでVBAで設定を変更することができます。
下記のコードは テキスト1 の禁則処理をオフにします。AC2010 ではデフォルトで禁足処理オンなので、オフにするときのみコードが必用になります。

AC2003以降は、AsianLineBreakプロパティですが、AC2000の場合は、FELineBreakプロパティですのでご注意ください。

ちなみに、禁則処理には、印刷時拡張とのからみでバグがありますので、ご注意ください。(下記リンク参照)

禁則処理オンのときの印刷時拡張のバグ - hatena chips

ワードラップのオフ

残念ながら、Accessのテキストボックスにはワードラップをオフにするプロパティはありません。常にオンの状態です。

ですので、ワードラップをオフにするには、自前で適切な位置に改行コードを挿入するコードを書く必要があります。この関数は AccessClub でかつて回答したことがあります。(下記のスレッドを参照)

レポート、テキストボックスの禁則処理に関して --Access Club 超初心者 FORUM--

しかし、上記で紹介した関数は、等幅フォントで、全角のみまたは半角のみ、かつ、改行を含んでいないという制限付きのものでした。

そこで、今回は、改行を含んでいても、プロポーショナルフォントでも、全角半角混合でも、すべてOKという方法を紹介します。

まず、標準モジュールに下記の関数を作成します。

うまく改行されない場合は、'←※ の数値を増やしてください。フォントサイズやフォントによって変わるようです。

レポートにフィールドと連結したテキストボックスを配置します。名前は、フィールド名と同じにします。(以降、フィールド名は、Fld1 と仮定して話を進めます。)

このテキストボックスは下記のように設定します。

プロパティ設定値
コントロールソースFld1
名前Fld1
可視いいえ
印刷時拡張いいえ

これとは別に非連結のテキストボックスを配置します。

プロパティ設定値
コントロールソース(設定しない)
名前txtFld1
可視はい
印刷時拡張はい

出力はこちらにしますので、フォント名、フォントサイズ、行間等の書式プロパティはこちらで設定してください。

このテキストボックスを配置したセクションのフォーマット時イベントで、下記のように記述します。

なお、この WordWrapOff関数を適用すると、禁則処理も必然的にオフになります。

サンプルファイルが下記からダウンロードできます。
RptWordWrapOff_07.zip (Access 2007 形式 - 27kb)
RptWordWrapOff.zip (Access 2002-2003 形式 - 24kb)
RptWordWrapOff_2k.zip (Access 2000 形式 - 24kb)

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/308-264172c2
該当の記事は見つかりませんでした。