• ベストアンサー

プリンターの用紙サイズを選択

こんばんは。 Windows 8.1 Pro 64bit + Visual Studio (Basic) の環境で印刷するプログラムについて教えてください。 ドットプリンターに出力する連続紙の用紙サイズを追加したのですが crReportDocument.PrintOptions.PaperSize = PaperOrientation.のところで 補完機能のリストに追加した用紙サイズが表示されません。 どうしてなのでしょうか。

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

  • ベストアンサー
回答No.4

#1です。 不愉快になんかなっていませんよ。気にしないでください。 ただ、私が提示したURLの内容はかなりディープな内容なので、ちょっと無理かなと思っただけです。 クリスタルレポートのメーカーに確認したほうがいいと思います。 ユーザー定義サイズの用紙を使うというのは、そんなに特別なことではないと思いますので、私が提示したようなことをしなくても、何か解決策を提示していただけるのではないでしょうか? お役にたてず申し訳ないですが。

shin-cyan
質問者

お礼

BarcodeMasterさん、おはようございます。 お陰様でようやく解決しました。 ちょっと時間がかかりましたが 良かったです。 ありがとうございました。

その他の回答 (3)

回答No.3

#1です。 そこにこれを書いてねっていうコメントみたいなものなので、ご自分で値をセットするべきなのだと思いますよ。例えば、ReportPathというのは、クリスタルレポートのレポート定義ファイルのようなもののパスを文字列か何かで書くのでは? 私はクリスタルレポートなんか使ったことないですが、ReportDocumentのLoadメソッドのヘルプを見れば、どんな型でどんな値を渡せばいいかわかるはずですよね? 意味もわからずコピペして、例え動いたとしても、あなたの経験値は元のままです。 shin-cyanさんのプログラミング経験と、いま行おうとしていることに、あまりにも差がありすぎるのではないでしょうか。VB.NETの入門書を2冊程度、専門書を2冊程度、まずは読破されることをおすすめします。 そうしたほうが、逆に解決は速いと思います。

shin-cyan
質問者

お礼

BarcodeMasterさん、不愉快な思いをさせて申し訳ありませんでした。 Visual Basicを始めたばかりで何もわからず 藁をもすがる思いでお聞きしてしまいました。 もちろん、参考書は6冊をわきに添えてパソコンと睨めっこしているのですが・・・ 頑張ります。

回答No.2

#1です。ちゃんと「End Class」か「End Module」の上に入れてくださいね。 一応、書式エラーが出ない状態にはしましたが。 -------------------------------------------------------------------------------- Public Function GetPapersizeID(ByVal PrinterName As String, ByVal PaperSizeName As String) As Integer Dim doctoprint As New System.Drawing.Printing.PrintDocument() Dim PaperSizeID As Integer = 0 Dim ppname As String = "" Dim s As String = "" doctoprint.PrinterSettings.PrinterName = PrinterName For i As Integer = 0 To doctoprint.PrinterSettings.PaperSizes.Count - 1 Dim rawKind As Integer ppname = PaperSizeName If doctoprint.PrinterSettings.PaperSizes(i).PaperName = ppname Then rawKind = CInt(doctoprint.PrinterSettings.PaperSizes(i).GetType().GetField("kind", _ Reflection.BindingFlags.Instance Or Reflection.BindingFlags.NonPublic).GetValue(doctoprint.PrinterSettings.PaperSizes(i))) PaperSizeID = rawKind Exit For End If Next Return PaperSizeID End Function --------------------------------------------------------------------------------

shin-cyan
質問者

補足

BarcodeMasterさん、早速のご回答ありがとうございます。 ご指示の通り記述しましたところ Public Function ~End Functionの箇所はエラーがなくなりました。 しかし、以下の部分のReportPath、ds、NumberOFCopies、Collated、 StartPage、EndPageの6項目が「宣言されていません。アクセスできない 保護レベルになっています。」というエラーが発生しました。 また、お恥ずかしい単純なことなのでしょうが、教えていただけないでしょうか。 *************************** Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click crReportDocument = New ReportDocument Dim repOptions As CrystalDecisions.CrystalReports.Engine.PrintOptions With crReportDocument repOptions = .PrintOptions With repOptions .PaperOrientation = CrystalDecisions.Shared.PaperOrientation.Portrait .PaperSize = GetPapersizeID("EPSON LX-300+II", "CEPCRP") .PrinterName = "EPSON LX-300+II" End With ' Set the Report Option first before loading the report ' or else settings won't take effect .Load(ReportPath, CrystalDecisions.Shared.OpenReportMethod.OpenReportByDefault) .SetDataSource(ds.Tables(0)) .Refresh() .PrintToPrinter(NumberOFCopies, Collated, StartPage, EndPage) End With End Sub '2015/08/20追加(End)

回答No.1

先頭にcrと付いていることから、クリスタルレポートのことでしょうか? メーカーに聞いたほうが早いと思いますけど。 こんなの見つかりました http://www.sourcehints.com/articles/how-to-customize-papersize-in-crystal-report.html http://garfie.weblogs.jp/life_of_dev/2010/12/crystal-reports.html

shin-cyan
質問者

補足

BarcodeMaster さん、ご回答ありがとうございます。 説明不足で申し訳ありませんでした。 ご推察の通り、クリスタルレポートファイルの印刷に苦戦しています。 ご案内頂いた Visual Basicの http://www.sourcehints.com/articles/how-to-customize-papersize-in-crystal-report.html にあるPublic Functionの定義でエラーが発生しました。 なにぶん、50歳を前に始めたVisual Basicで右も左もわかりません。 よろしければご指導お願いできないでしょうか? ********************************* Public Function GetPapersizeID(ByVal PrinterName As String, ByVal PaperSizeName As String) As Integer Dim doctoprint As New System.Drawing.Printing.PrintDocument() Dim PaperSizeID As Integer = 0 ' リターン値 Dim ppname As String = "" Dim s As String = "" doctoprint.PrinterSettings.PrinterName = PrinterName (ex."EpsonSQ-1170ESC/P2") For i As Integer = 0 To doctoprint.PrinterSettings.PaperSizes.Count - 1 Dim raw Kind As Integer ppname = PaperSizeName If doctoprint.PrinterSettings.PaperSizes(i).PaperName = ppnameThen Then rawKind = CInt(doctoprint.PrinterSettings.PaperSizes(i).GetType().GetField("kind", Reflection.BindingFlags.InstanceOrReflection.BindingFlags.NonPublic).GetValue(doctoprint.PrinterSettings.PaperSizes(i))) PaperSizeID = rawKind ExitFor() End If Next Return PaperSizeID End Function ******************************************* 上記のコーディングの Public Function GetPapersizeID(ByVal PrinterName As String, ByVal PaperSizeName As String) As Integer の部分が波線になりエラーとなっています。 よろしくお願いいたします。

関連するQ&A

  • プリンタの用紙サイズ

    お世話になります。 現在会社でEPSONのVP-1200というプリンタ―を使用しています。 このプリンターの用紙サイズには連続紙等あるのですがPCをシャットダウン等してプリントサーバプロパティを見るとその連続紙の用紙サイズは消えています。印刷時も選択できません(用紙サイズの欄に存在していない) なぜか10×11インチとかA4などの用紙サイズは残っていて、印刷時も選択できます。 メーカーやPCメーカー(HP)に問い合わせてもわかりませんとしか返ってきません。 なぜこのような症状がでてしまうのでしょうか? よろしくお願い致します。

  • プリンタの用紙サイズを変更したいんですが…

    プリンタの用紙サイズの変更を次のような手順行おうとしたら、「設定したプロパティは不正です」というエラーがでてとまってしまいます。 使用したいプリンタはNECのNEC PC-PR201/87LAでシリアルプリンタです。 エラーが発生するのはPrinter.PaperSize = 256の部分です。 やはりプリンタがこのプロパティをサポートしていないのでしょうか?どのような原因が考えられますか教えてください。 またほかの方法で設定できる方法があったら教えてください!お願いします。 ---------現在の方法------------- … (1)使用するプリンタの設定 (2)Printer.PaperSize = 256 (3)Printer.ScaleHeight = 9 * 1440           … ---------------------------------              という感じです…

  • プリンターの用紙サイズ

    Windows XP Proでプリンターの用紙サイズの 幅、長さを規格外のものにしたいのですが Windows9XやMeではユーザー定義というものが あったのですがWindows XPではありません。 どのようにすれば、用紙サイズ定義できるのでしょうか? ご教授お願い致します。

  • ActiveReportからドットプリンタの連続紙出力

    VB6を使用して、ActiveReportからドットプリンタで送り状を出力しようとしています。 送り状は路線便業者さんが使用されているようなものをイメージしていただければと思います。 用紙の都合上、連続紙から出力したいのですが、実行するとシートガイドから出力されてしまいます。 どうやらA4と認識されてしまっているようなのですが、どこを修正したら良いのか分かりません。 コードで指定しているものは下記になります。 With Me.Printer   .PaperSize = 256   .PaperWidth = 567 * 12.5   .PaperHeight = 567 * 6.4 End With Me.PageLeftMargin = 567 * 1.3 Me.PageRightMargin = 567 * 0.5 Me.PageTopMargin = 567 * 0.4 Me.PageBottomMargin = 567 * 0.4 プリンタ側の設定としては、上記規定のサイズの用紙(Aとします)を作成しておき、 ドットプリンタのプロパティから、デバイスの設定でフロントトラクタにAをセットしています。その他は使用しないと設定しました。 しかし、プログラムを実行させてプレビュー画面でプリンタのプロパティを見ると、 用紙サイズ:A4 給紙方法:シートガイド と戻ってしまっています。このプレビュー時にプロパティをフロントトラクタと、 用紙Aに変更すると正しく連続紙で出るのですが、毎回修正しなければならないのはどうしても避けたいと思います。 分かりづらい説明で大変恐縮ですが、お知恵をお貸しいただければと思います。 よろしくお願い致します。 ドットプリンタ:NEC MultiImpact 700LX2 開発PC:DELL LATITUDE D630 (WinXPPro SP3)

  • エクセル出力時の用紙サイズ設定

    ASPにおいてエクセルを出力(表示)しているのですが 用紙サイズを変更できません!!!! xlsSheetWrk.PageSetup.PaperSize = xlPaperA3 (xlsSheetWrkはシートオブジェクト) これではPaperSizeプロパティのエラーになってしまいます。 よろしくおねがいします。

  • 用紙設定で作成した用紙の用紙番号をVBで取得するには?

    WindowsNT4.0(SP6)上で、VB5(SP3)で作成したアプリケーションからAccess98のレポートをオープンし、オープンしたレポートのページ設定(用紙サイズ)をVBのプログラム内部で設定できるようにしました。 用紙サイズを設定するときは 指定したレポートの PrtDevMode プロパティのメンバ PaperSize に PaperSizeメンバ値(8=A3、9=A4、10=A4 Small、11=A5 等)をセットするとうまく行きました。 しかし問題なのが、Windowsのプリンタ設定のサーバーのプロパティで作成した用紙サイズをレポートの用紙サイズに設定しようと思っても、PaperSizeメンバ値(用紙番号)がわからないため、設定できません。 サーバープロパティで作成した用紙の用紙番号をVBで取得する方法がありましたら是非教えて下さい! ネット上でいろいろ調べているのですが見つかりません。 1つだけ同じ内容のものを見つけたのですが、使用しているソフトが Delphiだったのでダメでした。 どうかよろしくお願いします。m(__)m

  • Windows7 用紙サイズ

    現在、Windows7をプリンタサーバにしてアプリケーションから連続帳票を出力しています。 タイミングは不明ですが、ユーザ定義の用紙サイズが消えてしまう現象が発生します。 何か情報をご存知であれば教えて下さい。 ~ プリンタサーバ ~ OS:Windows7 Pro 32bit プリンタ:OKI MICROLINE 80HU ※USB接続です。 ~ クライアント端末 ~ OS:WindowsVista 32bit ※Windows7のプリンタを共有にしてドライバをインストールしました。 プリンタサーバ側で「10x8 インチ」のユーザ定義用紙を作成し、プリンタの設定などにもその用紙を設定していますが、不定期のタイミングで用紙サイズ・給紙方法などが初期化(?)されます。 その為、再度ユーザ定義用紙を作成し、プリンタの設定も変更しなおす対応が必要になります。 宜しくお願いいたします。

  • 用紙サイズがない

    はじめましてBOLTSです。 エプソンのプリンターでLP-9200Sを使用していまして、Accessなどからプリントしてるんですが、用紙サイズに長形3号とかそのあたりの用紙サイズが用紙選択のプルダウンに出てきません。この用紙サイズを追加することってできるのでしょうか? 原因はドライバーが悪いのでしょうか? どなたか解決方法をお持ちの方お願いします。

  • プリンターの用紙サイズの設定について。

    プリンターの用紙サイズではがきの項目がなくなり、選択できなくなりました。 解決方法を教えてください。 プリンターはMG5630 OSはWindows8.1 pro です。 ※OKWAVEより補足:「キヤノン製品」についての質問です。

  • 用紙のサイズが出てこない・・・!!!

     現在NECのパソコン、Win98を使用しています。後、プリンタはEPSONのVP-600というプリンタを使用しています。これはお店の伝票を出すためにこのVP-600を使用しているのですが、指定したい用紙サイズが「連続紙10×7インチ」です。しかし、この用紙サイズがVP-600のプロパティを開いて見ても表示されていません。  知り合いが持っているWin98にVP-600をインストールして試してみたところ、きちんと「連続紙10×7インチ」という表示が出ています。  何故私のパソコンにはこの「連続紙10×7インチ」が出ていないのか、が分かりません。  どなたかアドバイスをいただけないでしょうか?このままだと伝票が出せないんです。宜しくお願い致します。  (ちなみにいままではWin95を使っていました。そのときはきちんと出ていたように思います。そのパソコンが壊れたので、Win98を使おうとしています。)

専門家に質問してみよう