Re[4]: ハードコピー


[コメントツリー表示を見る] [発言時刻順表示を見る]

Posted by Uz on 2001/03/06 23:39:25

In Reply to: Re[3]: ハードコピー Posted by Uz on 2001/03/06 22:15:50


    > > VBのVerは?OSは?
    >
    > とりあえず、うちで、動いているサンプルをVBのページに
    > アップしました。
    > サンプルをDLして中のExeでも印刷できてないでしょうか?
    > 印刷できたら、VBのプロジェクトを開いて、実行して印刷、
    > できるか試してみてください。

    どうも、おかしいね。
    別の方法として、クリップボード経由のサンプルがあるので
    これでよければ、こっちで。(かなり、昔に作ったやつ)
    リサイズとかは自分でアレンジしてね。


    Option Explicit

    Declare Sub KeyBoardEvent Lib "user32" _
    Alias "keybd_event" (ByVal bVk As Byte, _
    ByVal bScan As Byte, _
    ByVal dwFlags As Long, _
    ByVal dwExtraInfo As Long)
    Public Const VK_SNAPSHOT = &H2C
    Public Const KEYEVENTF_EXTENDEDKEY = &H1

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' フォーム又は、画面をクリップボードに取り込み印刷を行う
    ' frmForm : (省略可能) 印刷を行うフォーム。
    ' 省略時はアクティブなフォームを印刷。
    ' 但し、Paramに1を指定した場合は無視される。
    ' Param : (省略可能) 0:フォームのみを印刷。
    ' 1:スクリーンを印刷。(既定値)
    ' Orientation : (省略可能) 用紙の方向。PrinterオブジェクトのOreientationプロパティと同じ。
    ' vbPRORPortrait : 1 : 用紙幅の狭い側を上にして印刷されます。
    ' vbPRORLandscape : 2 : 用紙幅の広い側を上にして印刷されます。
    Public Sub UzPrintForm(Optional ByVal frmForm As Variant, _
    Optional ByVal Param As Variant, _
    Optional ByVal Orientation As Variant)
    On Error GoTo ErrorHandle

    If Not IsMissing(frmForm) Then
    frmForm.SetFocus
    End If

    DoEvents
    If IsMissing(Param) Then
    Param = 1
    End If
    Call KeyBoardEvent(VK_SNAPSHOT, Param, 0, 0)
    DoEvents

    If Not IsMissing(Orientation) Then
    Printer.Orientation = Orientation
    End If
    Printer.PaintPicture Clipboard.GetData(vbCFBitmap), 0, 0
    Printer.EndDoc
    Exit Sub
    ErrorHandle:
    Call Err.Raise(Err.Number, Err.Source, Err.Description)
    End Sub



記事スレッド一覧