スプレッドを印刷プレビューで設定するには?

解決


VBビギナー  2006-08-04 19:56:50  No: 96160

環境  OS:XP  VB:Visual Studio.NET2003 SPREAD:6.0です。

フォームにスプレッドを差し込んでいるのですが、印刷プレビューの設定をするときにPrintdocument1のプログラムをどう書いていいかわかりません。こういった場合はどう書けばいいのでしょうか。お答えを頂ければと思います。よろしくお願いします。


うなまな  2006-08-04 23:08:36  No: 96161

印刷はどのように行っていますか?
PrintSheetメソッド?


VBビギナー  2006-08-05 00:09:57  No: 96162

うなまなさん、ご質問ありがとうございます。

はい。最初はspread1.printsheet(0)で印刷を行なっていました。
これでspreadの表は印刷できるのですが、表が大きいので縦に長い分はいい
のですが、横ははみ出してしまうのは困っています。その後、VBの本を参考にして、
印刷するときのプログラムはこのようにしています。
  PrintDocument1.DefaultPageSettings = pagesetting
  strprint = FpSpread1.Sheets(0)
  PrintDialog1.Document = PrintDocument1

  If PrintDialog1.ShowDialog = DialogResult.OK Then
      PrintDocument1.Print()
  Else
      Exit Sub
  End If
このように印刷するプログラムは初めてで、スプレッドの表をどういう風に
プログラムとして書けばいいか、わからない状態です。本当、初心者で申し訳ないのですが、
アドバイスでも何でも教えていただけると、幸いです。


うなまな  2006-08-05 00:46:01  No: 96163

横にはみ出すのが困るのは分かるのですが、それをどのように対処
したいのでしょうか?


VBビギナー  2006-08-05 01:38:25  No: 96164

>横にはみ出すのが困るのは分かるのですが、それをどのように対処
>したいのでしょうか?
印刷プレビューを見てはみ出している場合は,スプレッドの表を印刷した紙に収まる様にしたいと思っていますが、ページ設定で用紙を横にすれば問題
ないかと思いました。申し訳ありません。大変失礼しました。

問題なのは印刷プレビューを見ることができない、ということです。
私が困っているのはプレビューを見る際、PrintPreviewDialogを開く
のは問題ないと思うのですが、PrintDocument1(Private Sub PrintDocument1_PrintPage)の部分のプログラムをどう書いたらいいのか
分からないということです。

'印刷プレビューを表示する際の処理
    Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
        Try
            PrintDocument1.DefaultPageSettings = pagesetting
            strprint = FpSpread1.Sheets(0)
            PrintPreviewDialog1.Document = PrintDocument1
            PrintPreviewDialog1.ShowDialog()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

このようにしています。あとはPrintDocumentが出来れば動作できるかと思っ
ています。調べてみたのですが、今回のようにスプレッドの場合の
PrintDocumentでは何を定義して、どう処理すればいいのか分かりません。
一応以下のようにしています(まだほとんど書けていませんが)。

Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
        Try
            Dim fontsize As New Font("me ui gothic", 11)
            Dim intnumberchars As Integer '印刷が可能な1ページあたりの文字数
            Dim intnumberlines As Integer '1ページあたりの行数
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

今のところこんな感じです。この部分のプログラムの書き方など教えてもら
えたらと思います。もしかしたら、ここに乗せたプログラムに間違いがあっ
たり、私が勘違いしている部分があるかもしれませんが、ご意見をいただきたいと思いますので、よろしくお願いします。


うなまな  2006-08-07 18:22:13  No: 96165

用紙方向を横にしたいのであれば、
With Me.FpSpread1_Sheet1
    .PrintInfo.Preview = True
    .PrintInfo.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape
    .PrintInfo.ShowPrintDialog = True
End With
Me.FpSpread1.PrintSheet(Me.FpSpread1.ActiveSheetIndex)
でいいかと思います。
PrintDocumentを利用する方法に関しては、詳しくないので・・・すみません。


あん  2006-08-08 02:01:09  No: 96166

まず、Spreadがシートを画像で出力できるか
確認してください。(Spread .NETは可能なようですがSpread 6.0はこちらでは確認できません)
画像がとれれば、PrintDocumentで出力可能です。


VBビギナー  2006-08-08 04:15:03  No: 96167

うなまなさん  あんさん

アドバイスありがとうございます。

スプレッドの印刷プレビューの件ですが、
スプレッドのSPREADデザイナのシートの印刷オプションというところで
印刷プレビューというチェックボックスがあるのですが、それにチェックをつけることで、印刷時、プレビューを表示することが出来るようになりました。
上記にプログラムを書いた文について

>PrintDocument1.DefaultPageSettings = pagesetting
>  strprint = FpSpread1.Sheets(0)
>  PrintDialog1.Document = PrintDocument1
>
>  If PrintDialog1.ShowDialog = DialogResult.OK Then
>      PrintDocument1.Print()
>  Else
>      Exit Sub
> End If
としていましたが、

       spread1.Print()

といきなりシンプルですが、デザイナでさっきの設定をしておけば
印刷するとき、一度プレビューを表示してくれるようです。
一応これで、印刷プレビューの表示は可能になりましたので、最後は自己解決となってしまいましたが、解決チェックをいれさせて頂きます。

今回は設定を少し変えるだけで出来たのですが、プログラムをしっかり書いて、自分で仕組みが理解できなかったので、あんさんのアドバイスを参考にまたやってみたいと思います。うなまなさんのプログラムで用紙の方向を変えることもやってみます。ありがとうございました。
また、分からない事もいろいろでて書かせていただくと思いますが、その際は皆様、ご教授よろしくお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加