- ベストアンサー
バーコード印刷
VB6.0を使用しているのですが、バーコードを印刷した後にフォントを明朝体などにもどすと文字化けをしてしまいます。 例えば次のようにした場合、「あいうえお」から後に印刷するものはすべて文字化けしてしまいます。(半角の英数文字は文字化けしません。) Printer.Font = "CN-CODE39" Printer.Print "*123456*" Printer.Font = "MS 明朝" printer.print "あいうえお" 以前、同じ質問をした人がいるので、そちらを参考にしましたが、解決できませんでした。 大変申し訳ございませんが、解決策を教えてください。 参考 http://oshiete1.goo.ne.jp/kotaeru.php3?q=603011
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
#1です。補足どうもありがとうございます。 OSの違いに問題があるみたいですね。 #1のテストも95と98でしています。 2000もXPも持っていないので検証のしようが無いですが Printer.Font.Name = "MS 明朝" Printer.Font.Charset = 128 printer.print "あいうえお" としたらどうなりますか? 後、このプログラムは VB上で試してますか?それともEXEでしょうか? こちらでテストできないので、確実な事が回答できず大変申し訳ありません。
その他の回答 (6)
- todo36
- ベストアンサー率58% (728/1234)
>95/98の場合、自動で切り替わって >2000/XPでは自動で切り替わらない(バグ?)という事でいいんでしょうか? 95/98の場合は英語版のMS明朝がインストールされていないので日本語版のMS明朝に切り替えるのでしょう。
お礼
ありがとうございます。 いつかまた、お世話になる事があるかもしれませんが、その時もよろしくお願いします。
- taisuke555
- ベストアンサー率55% (132/236)
todo36さん 私の疑問に答えて頂いたんでしょうか? ありがとうございます。 >Printer.Font.Charset = 128 '日本語のcharsetに変更 の部分は、95/98の場合、自動で切り替わって 2000/XPでは自動で切り替わらない(バグ?)という事でいいんでしょうか? (私の解説があっているか今一つ自信が無いので) >前者は標準プロパティ(Name)への代入(Let)です。 でしたね。(よけいな事書いちゃいました。) momochuさんへ >プログラムをもう一度立ち上げなおさないと、最初から文字化けをしてしまいます。 Printer.Font.Charset = 128 を書くとなると言う事ですか? >何か試したいことがあったら言ってください。 私の方では、印刷出来るので試したいことと言われても(笑) 最初に回答してしまったので、何とか力になりたいと回答してきましたが、 todo36さんが回答して下さったので、私の方はこれで失礼します。 頑張ってください。
お礼
いろいろお世話になり、ありがとうございました。 またお世話になることもあるかも知れませんがその時もどうぞよろしくお願いします。
- todo36
- ベストアンサー率58% (728/1234)
>どうして? Printer.Font = "CN-CODE39" '日本語非対応なので英語のcharsetが設定される Printer.Print "*123456*" Printer.Font = "MS 明朝" '英語対応なのでcharsetはそのまま英悟 printer.print "あいうえお" '文字化け Printer.Font.Charset = 128 '日本語のcharsetに変更 printer.print "あいうえお" '正常 >Printer.Font = "MS 明朝"でなく、 >Printer.Font.Name = "MS 明朝" 同じです。 前者は標準プロパティ(Name)への代入(Let)です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=307309
- taisuke555
- ベストアンサー率55% (132/236)
たびたび、すいません。 ちょっと試していただきたいのですが、 Printer.Font.Name = "MS 明朝" printer.print "あいうえお" では、どうなりますか? Printer.Font = "MS 明朝"でなく、 Printer.Font.Name = "MS 明朝" です。
お礼
Printer.Font.Name="MS 明朝"とPrinter.Font="MS 明朝"では、まったく同じ結果でした。Printer.Font.Charset = 128があるか無いかで結果が変わりました。また、文字化けをしていてもPrinter.Font = "CN-CODE39"を入れた後の部分はちゃんとバーコードが印刷されます。 また、プログラムをもう一度立ち上げなおさないと、最初から文字化けをしてしまいます。VB上でプログラムを実行した場合はVB自体を終わらせて再び立ち上げないと文字化けをしたままです。 また、何か試したいことがあったら言ってください。お礼にいろいろ試させていただきます。 もう少し締め切らずにおいておきます。
- taisuke555
- ベストアンサー率55% (132/236)
印刷出来たようでなによりです。 >Printer.Font.Charset = 128はどういう意味なんですか? [ヘルプより抜粋] フォントで使用する文字セットの値を設定します。値の取得もできます。 0 : Windows 標準文字セット 2 : 特殊文字セット 128: 日本語版 Windows 専用の 2 バイト文字セット(DBCS) 255: DOS アプリケーションで表示する拡張文字セット 普通は、FONT.NAMEで日本語を選択すると、128に自動でなるみたいです。 (意識して書いたことはありません。) XP/2000で文字化けする時に明示的に128を書くように どこかのホームページで見たことがあったので、 試しに回答してみました。 (どうして?なのかは、私には分かりません。) 何にしても、これ以外の回答は、ちょっと無理そうだったので うまく印刷できて良かったです。
- taisuke555
- ベストアンサー率55% (132/236)
このような質問の場合、 OSのバージョンやプリンタの機種名を記載しないと 何が原因かわからないと思います。 Printer.Font = "MS 明朝" のフォント名が違っているという事はありませんか? 文字列指定なので、 スペースの半角・全角が違っているだけでも設定されません。 (私の方で確認した所、エラーにはならずに文字化けしました。) それ以外の場合は、ちょっと再現できませんでしたので 他の方の回答を待ってください。 (一応、4台のプリンタで試してみました。)
お礼
どうもありがとうございます。 ご指摘の件ですが、 OSはWINDOWS2000とWINDOWS XPです。 また、プリンターはキャノンのレーザーショット LBP-740と同じくLBP-730、エプソンのカラリオ PM-A850です。 上記のOSとプリンタはどの組み合わせにしても同じ結果になってしまいます。 WINDOWS98では同じプログラムで問題なく印刷されます。もちろん、どのプリンタを使っても大丈夫です。 フォント名はスペース部分は半角でアルファベット、漢字とも全角です。 バーコードを印刷する前の部分は「MS 明朝」で間違いなく印刷されています。バーコードもちゃんと印刷されています。 また、何かお気づきの点がありましたら、教えてください。
お礼
再度ありがとうございます。 VB上とEXEのどちらも同じ現象なんです。 今日は会社を出てしまいましたので、明日試させていただきます。 お付き合いいただきましてありがとうございます。
補足
ありがとうございました。 意味もわからずにtaisuke555さんのご指摘の通り入力して、とりあえずWPとLBP740の組み合わせで試したところ、うまく印刷できました。紙が出てきた瞬間驚きと感激でいっぱいでした。 本当に感謝しております。 ところでPrinter.Font.Charset = 128はどういう意味なんですか?また、数値は128以外にもいろいろあるんですか? 補足で質問してしまい申し訳ございません。