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

AC2007のPrintメソッドのバグ

前回の記事 で、レポートでPrintメソッドで印字する方法を紹介しましたが、文字列の最後が印字されないという現象に悩まされました。

VbaPrintBug.png

いろいろ検索してみると、AC2007のPrintメソッドのバグらしいです。ということでこのバグ対策用の代替関数を作成してみました。

難易度:

まずこのバグについてのMSの情報は下記です。

Access 2007 のレポートで Print メソッドで 2バイト文字を 1 文字のみ出力すると 正しく出力されない

上記の情報によると、「一文字のみ出力すると発生する」とのことですが、実際は、2バイト文字(全角文字)を含む2文字以上の文字列の場合も、すべて文字欠け、あるいは文字化けが発生します。

また、回避策として「スペースなどの文字を追加して、出力する文字数を 2 文字以上とする」と行ってますが、実際は含まれる全角文字の数だけ、文字列の最後に半角空白を追加する必要があるようです。

回避策例

そもそも2バイト文字という表現もおかしいですね。AC2000以降はUnicodeになっているので、半角文字も2バイトのはずです。AC2003までは問題なく使えていたのに、AC2007でなぜこのようになるのかMSのやることは理解できません。

「マイクロソフト製品の問題として認識しています。 」とのことなので早急なバグフィクスを期待したいところですが、上記の情報の更新日付 2007年1月23日 から3年近くたち、SP2でも解決されていないところをみると次のバージョン(AC2010?)までは期待薄のように思えます。
追記 2011/03: Access2010でこのバグが解消されているのを確認しまた。

回避法は出力する文字列の最後に半角空白を追加するだけなので簡単なのですが大量にPrintメソッドを使っている場合や、出力する文字列が固定でない場合などは面倒です。そこで回避策を組み込んだ代替関数を作成してみました。

標準モジュールに下記のプロシージャを作成します。

使い方は、レポートのセクションのフォーマット時などで、Me.Print の代わりに MyPrint と記述します。

あちこちで、Me.Print を使っている場合は、メニュー[編集]-[置換]で Me.Print を MyPrint に置換すれば一気に対策完了です。

拍手する

4 Comments

雅 says...""

こんにちわ。雅です。

ほんと早く直してほしいですね。
このバグもそうですが直線使うと高さが0.026cm増える件も直してほしいです。

でわ。

2009.12.28 14:51 | URL | #llOsW3ec [edit]
hatena says..."バグ"

雅さん、こんにちは。

そんなバグもあるんですか。
どうも、リボンにはなじめなし、新機能で絶対必要というものもないし、AC2007完全移行には踏み切れません。

2009.12.28 17:58 | URL | #- [edit]
雅 says...""

こんばんわ。雅です。

これです。
http://support.microsoft.com/kb/932492/ja

私はタブにまだなじめません。(--;
レポート複数表示するとかは便利なんですがデザインは不便だ。
帳票フォームを作ってサイズ自動修正にしておくとデザインで保存した高さで表示するし。。。

# といっても業務で97から移行しなければならないのでそんなことも言ってられない。。。

でわ。

2009.12.29 01:42 | URL | #llOsW3ec [edit]
黒麹 says...""

こんにちは
Windows XP,Office2003サポート終了で、
Accessを2003から2007へ移行したら、
Printメソッドを使用したレポートが
目も当てられない状態で、気を失いそうでした。

Office2007 SP3でも直っていないのですね。
放置プレー(-_-)/~~~ピシー!ピシー!

飛び越して、2010では直っているのですね。
大変参考になりました。(^^)

2014.03.29 18:40 | URL | #- [edit]

Leave a reply






Trackbacks

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