dポイントプレゼントキャンペーン実施中!

ご回答が頂けないようですので再投稿です。
今回応答がない場合は違うサイトを探します。。


Printerオブジェクトを使用して伝票出力をします。
出力文字列の表示位置に関してご教授願います。

Printer.CurrentX = (縦位置)
Printer.CurrentY = (横位置)
Printer.Print (出力文字)
※単位はミリメートルです。
※伝票(縦:114、横:210)

Printer.CurrentXの指定方法が分かりません。
テストで指定して実装してみたのですが私の勝手な
推測ですが余白??の関係で私が意図した位置に表示
されません。CurrentXの指定は余白分を考慮して
設定しないといけないのでしょうか?

ご教授のほどよろしくお願いします。

A 回答 (4件)

まず、社外向けなら、再配布可能な、他社のアドオンをお勧めします。


社内向けなら、努力してください。
VB6のプリンターコマンドはまったく出鱈目です。
また、プリンタードライバーは、マシンの差を吸収してくれません。LAN経由になるともっとひどいです。
と言いつつ、サイズから行くと宅急便の送り状のように見えますが、ひとつの方法として

FORM に CommonDialog1 貼り付け
印刷コマンドに
PRINTER_SET
Printer.ScaleMode = 0
Printer.height = 7350 '7300 '紙が 厚いので 理論値より大きい
Printer.width = 19500
Printer.Scale (0, 0)-(300, 127)

Printer.Print ’プリント開始

Dim tate_y As Integer
Dim yoko_x As Integer
tate_y = -5  誤差調整
yoko_x = 0
Printer.FontName = "P明朝"

If Data1.Recordset!郵便番号 = "" Or IsNull(Data1.Recordset!郵便番号) = True Then

Else
Printer.FontSize = 20
X = 0
Do While Len(Data1.Recordset!郵便番号) > X
If X > 2 Then
Printer.CurrentX = yoko_x + 44 + X * 10 '38-7
Else
Printer.CurrentX = yoko_x + 40 + X * 10 ' 35-7
End If
Printer.CurrentY = tate_y + 7
Printer.Print Mid(Data1.Recordset!郵便番号, X + 1, 1)
X = X + 1
Loop
End If
*
*
*
*
*
Printer.FontSize = 14
Printer.CurrentX = yoko_x + 40
Printer.CurrentY = tate_y + 160
Printer.Print 自社名

Printer.EndDoc  1枚終わり
///////
Public Sub PRINTER_SET()
For I = 0 To Printers.Count - 1
If Printers(I).DeviceName = RENPURIDRV Then
Set Printer = Printers(I)
Exit For
End If
Next I
End Sub
    • good
    • 0

こんにちは。


まさかとは思いますが、

Printer.ScaleMode はミリメートルになってますよね?

Printer.ScaleMode = 6 でしたっけ?

外してましたらご愛嬌ということで。。。(^^;;;
以上です。
 
    • good
    • 0

プリンターにもよりますが、(プリンタが)物理的に印刷できない余白とプリンタドライバの設定による余白を考慮する必要があると思います。

    • good
    • 0

今、わたしはVB6が無いので、CurrentX/Yの動きはわかりません。



ところで、、、

質問を見る限り、業務用のアプリを作成ですよね?
パッケージではなく、特定の納品先へのアプリですよね?
「伝票」を印刷するプリンタは、固定ではないのですか?


これらが前提としてと、、、

そちらに実環境と同型のプリンタがあれば、余白設定値も含め手順書として納めればいいように思いますが、いかがでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!