[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/04/12(Thu) 13:20
投稿者名:ガスヤ
Eメール:
URL :
タイトル:
漢字プリンターへの出力
VB6.0 win98 FMPR373にて以下のプログラムで文字の出力をしようとしております。
全角の文字が文字化けするのですが、どうのようにすればよいのでしょうか。

Private Sub Command1_Click()

Dim strm As ADODB.Stream
Set strm = New ADODB.Stream

Open "LPT1" For Output As #1  'プリンターオープン(装置番号1に割当)

strm.Open
strm.Type = adTypeText
strm.Charset = "ISO-2022-JP"
strm.WriteText Text1.Text

strm.position = 0
    
Print #1, strm.ReadText 'プリントアウト

strm.Close
Set strm = Nothing

Close #1 'プリンタ

End Sub

出力を見るとshift_jisのコードで出力されているようです。

投稿時間:2007/04/12(Thu) 14:34
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 漢字プリンターへの出力
> VB6.0 win98 FMPR373にて以下のプログラムで文字の出力をしようとしております。

MS製 or 富士通製の Win98 用ドライバを入れて、
Printer.Print メソッドを使えば済むのでは。

http://support.microsoft.com/kb/403409
http://www.fmworld.net/cgi-bin/driversearch/drvdownload.cgi?DRIVER_NUM=E9000024&COLOR=1

投稿時間:2007/04/12(Thu) 14:49
投稿者名:ガスヤ
Eメール:
URL :
タイトル:
Re^2: 漢字プリンターへの出力
ありがとうございます。
実を言いますと、VB2.0にてconfig.sysにjprinter.sysを追記して下記プログラムにて
動かしていたものを、VB6.0に変更するにあたり、文字化けが発生し、調べたところ
VB2.0ではjprinter.sysの追記によってshift_jisでの出力がjisに変換できていることが
分かったので、VB6.0でもjisに変換しようとしたのですが、前述のプログラムでjisに変換した
つもりだったのですが、やり方がまずいのでしょうか。それともドライバーを入れるしかないのでしょうか。



Open "LPT1" For Output As #1  'プリンターオープン(装置番号1に割当)
Print #1 Text1.Text
Close #1

投稿時間:2007/04/12(Thu) 15:09
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 漢字プリンターへの出力
VB2 の文字列は ANSI ベース、VB6 の文字列は Unicode ベースですから、その手法で
非 Unicode文字列を扱いたいのであれば、バイナリモードを使わねばならないでしょう。

http://support.microsoft.com/kb/119113/en-us

投稿時間:2007/04/12(Thu) 15:04
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: 漢字プリンターへの出力
> MS製 or 富士通製の Win98 用ドライバを入れて、
おっと。富士通製の 373 ドライバは Win2000 以降のみでしたか…。
(Win98用 富士通製ドライバが使えるのは、373a でした)

ということで、Microsoft 製 373 ドライバで試してみては?
http://www.fmworld.net/paso/win98/taiou/printer.html

投稿時間:2007/04/12(Thu) 16:33
投稿者名:ガスヤ
Eメール:
URL :
タイトル:
Re^2: 漢字プリンターへの出力
>
> MS製 or 富士通製の Win98 用ドライバを入れて、
> Printer.Print メソッドを使えば済むのでは。
>


早速やってみました、直接出力した時より文字化けがひどくなってしまったのですが・・・。
Printer.Print メソッドを使って連続用紙に一行づつ出力していくことは可能でしょうか。

投稿時間:2007/04/12(Thu) 17:05
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: 漢字プリンターへの出力
> 早速やってみました、直接出力した時より文字化けがひどくなってしまったのですが・・・。
何らかの文字コード変換や、プリンタコマンドの出力を行っていますか? 行っていませんか?
(Printer.Print の場合、通常はそうした処理は不要のはず)

> Printer.Print メソッドを使って連続用紙に一行づつ出力していくことは可能でしょうか。
Printer.Print ではページ単位の出力しかできないので、行単位の処理が必要な場合には、
「縦が 1行分の高さ」の「余白なし」のユーザー定義用紙を作る必要があるかと。

さもなくば、やはり低レベルコマンドを直接投げる必要があるかと思います。
(私は、富士通プリンタ用の漢字コマンドを知らないので、お役には立てそうにないですが…)
http://support.microsoft.com/kb/175083/ja

投稿時間:2007/04/13(Fri) 10:40
投稿者名:K.J.K.
Eメール:
URL :
タイトル:
Re: 漢字プリンターへの出力
> strm.Charset = "ISO-2022-JP"

Shift-JISではなくJISです。
また、漢字コードON/OFF は ESC & "$B"とESC & "(H"です。

投稿時間:2007/04/16(Mon) 13:04
投稿者名:ガスヤ
Eメール:
URL :
タイトル:
Re: 漢字プリンターへの出力
魔界の仮面弁士様、K.J.K様
ご回答ありがとうございました。
とりあえず、文字列をShift_JISの文字コードからJISの文字コードへ一文字づつ変換して
送信することで解決できました。
ありがとうございました。