• ベストアンサー

VB Printerオブジェクトに関して

ご回答が頂けないようですので再投稿です。 今回応答がない場合は違うサイトを探します。。 Printerオブジェクトを使用して伝票出力をします。 出力文字列の表示位置に関してご教授願います。 Printer.CurrentX = (縦位置) Printer.CurrentY = (横位置) Printer.Print (出力文字) ※単位はミリメートルです。 ※伝票(縦:114、横:210) Printer.CurrentXの指定方法が分かりません。 テストで指定して実装してみたのですが私の勝手な 推測ですが余白??の関係で私が意図した位置に表示 されません。CurrentXの指定は余白分を考慮して 設定しないといけないのでしょうか? ご教授のほどよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • takamoke
  • ベストアンサー率33% (30/89)
回答No.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

その他の回答 (3)

  • taocat
  • ベストアンサー率61% (191/310)
回答No.3

こんにちは。 まさかとは思いますが、 Printer.ScaleMode はミリメートルになってますよね? Printer.ScaleMode = 6 でしたっけ? 外してましたらご愛嬌ということで。。。(^^;;; 以上です。  

  • lasichi
  • ベストアンサー率31% (122/389)
回答No.2

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

回答No.1

今、わたしはVB6が無いので、CurrentX/Yの動きはわかりません。 ところで、、、 質問を見る限り、業務用のアプリを作成ですよね? パッケージではなく、特定の納品先へのアプリですよね? 「伝票」を印刷するプリンタは、固定ではないのですか? これらが前提としてと、、、 そちらに実環境と同型のプリンタがあれば、余白設定値も含め手順書として納めればいいように思いますが、いかがでしょうか?

関連するQ&A

  • vb2010

    vb2010で指定のポイントに文字を表示させる方法を教えてください。 下記のようなコードは間違いでしょうか。 初心者です。 CurrentX = 110 CurrentY = 70 Print("おはよう")

  • VB6とVB.NETでは同じフォントでも違う文字になる?

    VB6とVB.NETでは同じフォントでも違う文字になる? VB.NETで文字を印刷しているのですが、VB6で印刷したものと、VB.NETで印刷したものは 同じフォントを指定しているのに、明らかに文字が違います。 このようなことはあるのでしょうか。 あるいはロジックに問題があるのでしょうか。 VB6 Printer.FontName = "MS ゴシック" Printer.CurrentY = YY Printer.CurrentX = XX Printer.FontSize = 10 Printer.Print(TITLE) VB.NET Dim PrtFont1 As New Font("MS ゴジック", 10) e.Graphics.DrawString(TITLE, PrtFont1, Brushes.Black, XX,YY) Windows XP VisualBasic 6.0, Visualbasic2010 Express

  • VB6の印刷でメモリリーク

    VB6の印刷でメモリリーク VB6.0(SP6)について質問です。 PRINTERオブジェクトを使用して連続で印刷するとメモリリークが発生します。 プログラムは単純にPrint文で印刷しているのみですが、Printerオブジェクトに 問題があるのでしょうか? もしかしたら使用可能メモリ限界まで増加し続けるというWindowsの仕様でしょうか? お知恵をお貸しください。よろしくお願いします。 以下のソースを2秒周期のタイマで実行しています。 For iLoop = 0 To 100 Printer.CurrentX = iLoop Printer.CurrentY = iLoop Printer.Print "TEST" Next iLoop ’ テスト用にKILLDOCをしています Printer.KillDoc

  • 印刷時の数値データの右揃えについて

    印刷を行う場合に数値データの右揃えをしたいと思っています。 現在は、入力された数値の文字数をLen関数で取得してprinter.currentx と printer.currenty の数値を微妙に変えながら実行しています。 もっと簡単に右揃えする方法はあるのでしょうか。

  • CreateFontの使い方

    VisualBasic 6.0で、下記のプログラムに,CreateFontを、加えて PictureBox上に、上下反転や縦倍角や横倍角の文字列を表示したいのですが、 うまくいかないです。どのように書いたらよいか教えてください。 お願いします。 Msg1 = "Aa" Form2.Picture1.CurrentX = 400 Form2.Picture1.CurrentY = 400 Form2.Picture1.FontSize = 40 Form2.Picture1.Print Msg1

  • VB6のPrintオブジェクトで学生証を作成したい

    お世話になります。 VB6のPrinterオブジェクトを使って、学生証のような物を印刷するプログラムを作成しようと思っておりますが、悩んでいるところがありまして・・・ ・長方形(顔写真を張るエリア)の線の作り方 ・ビットマップ(ロゴ)の張り方 ・文章の途中で、フォント種類の変更  (例: 「class : あいう」の場合、「class :」と「あいう」でフォントを分けたい) ・各文章や長方形の開始位置指定 以上の事を行いたいと思っております。 実現方法をご存知の方、ご教授をお願いいたします。 また、サンプルの載っているホームページがありましたら、 そちらも教えてください。 どうぞよろしくお願いいたします。

  • ドットプリンタでバーコードの印刷

    こんにちは。いつもお世話になっています。 現在、ドットプリンタにバーコードの印刷を試みていますが、 数値のままの表記になってしまい、うまくいきません。 他の方の質問・回答も検索し、いろいろ試したのですが 状況に変わりがなかったので改めて質問を書かせていただきました。 現在使用しているプリンタは、NECのMultiImpactです。 (VB6.0で作業しています。) 実際に現在組んでいるコードは下記のようなものです。 Public Sub AA()   ~略~   Printer.FontName = "OCR-B 10cpi"   Printer.FontSize = 12   Call Prt_set(10, 200, strNo) '※1   Printer.Font.Charset = 0   Printer.Font = "Code39"   Call Prt_set(280, 240, "*123456*")  '※2   Printer.Font.Charset = 128   Printer.FontName = "OCR-B 10cpi"   Call Prt_set(280, 500, strC) '※3   ~略~ End Sub '指定された位置に印字する Public Sub Prt_set(i As Integer, j As Integer, Moji As String)    Printer.CurrentY = i    Printer.CurrentX = j    Printer.Print Moji End Sub 実行すると、 ※1と※3の文字は正常に出力されますが、※2はそのまま"*123456*"数値(文字列?)で印刷されてしまいます。 初心者のため、見苦しいコードになっているかもしれませんが、どなたかなにか教えていただけないでしょうか。 よろしくお願いします。

  • テキストボックス(ワードです)

    今晩は、下記教えて下さい。宜しく。 (1)テキストボックスの位置を決めたいのですが、 「レイアウトタブー」の右方向の基準T(余白、ページ、段、文字)、下方向の基準W(余白、ページー、段落、行)について、その意味と実際基準及び運用がわかりません。 (2)10cmX10cmの「縦テキストボックス」に文字フォント 24の文字を入れると、「横8文字で縦6列」になるのですが、これを「横8文字で縦8列」に増やしたいのですが、いいやり方あるでしょうか。特に縦の余白部分をなくしたいと思うのですが、(文字フォント は変えずにご指導お願いします。 (3)テキストボックスの書式設定の「テキストボックスと文字列の間隔」左右、上下の具体的な運用と「描画オブジェクトで文字列を折返すW」 「文字列に合わせゼ描画オブジェクトのサイズを調整するT」の意味と 具体的な運用お教え下さい。どうか宜しく。

  • printerの設定について

    プリンターは Canon iX5000です PDFファイルからの印刷は ctrl + P が指定されます 印刷前に印刷の方向(縦・横)や用紙の大きさ・カラー/白黒などの指定があります この際A3を指定しますが,出力結果がB4なのです ctrl + P ではここ以外にはプリンターの指定はないと思いますが…… 説明書には何もありません Canon にも聞いてみます

  • アクセルのフォームにおける書式設定について

    フォーム上で文字の配置を設定する際に、枠内において横位置は左・中央・右・均等とあるのですが、縦位置にかんしては上余白、下余白などしかありません。 縦位置を中そろえなどには出来ないのでしょうか? アドバイスの程宜しくお願いします。