お世話になります。
封筒やハガキの宛名面をレポートで作成しております。
外字はレポートをPDFに印刷した後にIllustratorで作字を行う必要があるため、外字を含むレコードの抽出を行いたいです。
現行のシステムでは、客先からのExcelデータをインポートし、レポートのレコードソースにする出力用テーブルに追加する際、外字が「?」に置き換わることを利用して、出力用テーブルと同じフィールドを持つ選択クエリを作成し、各フィールドの抽出条件に?を入れて抽出しているのですが、こちらの方法に問題はありませんでしょうか?
また、もっとスマートなやり方・便利なやり方がありましたらご教示いただけますと幸いです。
よろしくお願い致します。
文字の問題は難しいですね
Excel上で正しく表示されているならACCESSでもそのまま表示されるよう、原因の究明と解決を行うべきだと思います
「『外字は必ずIllustratorで作字を行うこと』というルールがあるので外字は化けてほしい」という要望があるなら今の方法でいいんじゃないでしょうか?意味が分かりませんが
回答ありがとうございます。
仮にAccessの出力用テーブル上で正しく表示されたとしても、レポートで使用しているフォントでその字がなければ結局Illustratorで修正しなくてはなりません。
エクセルもAccessのテーブル、フォーム、レポートも、ユニコードに対応しているので、エクセルで正しく表示されるなら、通常はAccessでも正しく表示されるはずです。
ただし、VBAはいまだにユニコード非対応(Shift-JIS依存)の部分がありますので、使い方によっては非Shift-JIS文字が「?」に変わることがあります。
追加クエリや、通常の代入操作なら「?」に変わることはないはずです。
現状のシステムでは、具体的にどのように「出力用テーブルに追加」しているのですか。
今どきのフォントでユニコードでないフォントはないと思いますが、具体的にどのような文字が、修正が必要になりますか。
すみません、外字が?に変わるのは追加クエリを実行した時ではなく、Strconv([フィールド],4)で半角から全角に変換するクエリを実行した時でした。
例えば「吉(上が士ではなく土)」といったレコード上で太字っぽく表示される文字は、全角変換用のクエリを実行した時に?に置き換わります。
主にHGP正楷書体をレポート用のフォントとして使用しています。
上が土の吉は異体字ですね。Unicodeにはありますので、現在の環境なら通常は正しく表示できます。
Strconv関数はUnicode非対応なので?に文字化けします。
全角変換は、Strconvを使わずに、自作関数を作成してください。例えば、下記などを参考に。
文字化け対応StrConv - Qiita
当方の環境(Win11)では「HGP正楷書体」は入っていないですね。昔、そのようなフォントが入っていた記憶があるので古いフォントなのでしょう。
「HG正楷書体-PRO」というフォントは入っていたので、これで確認してみましたが正常に表示されました。正楷書体なのでおそらく字体は同じだと思われます。
こちらにもHG正楷書体-PROがありましたので変更してみたところ、文字は表示されますが字体は違いました。
スクリーンショットを添付したいのですが、どのようにすれば貼り付けられますでしょうか?.pngです
私のところでも字体は違うようでした。
調べてみると「HG正楷書体-PRO」は有料のフォントのようなので、課金しないと使えないのかもしれません。
HG正楷書体-PRO / RICOH(リコー) | フォント専門店 Font Garage
HGP正楷書体でもHG正楷書体PROと同じく、表示はされるが字体が異なりました。
表示はされるが字体が違うというのは?に置き換わるよりもタチが悪そうなので、
現状のまま、StrConvで?に置き換えて抽出する方法を採ろうと思います。