VB6 CrystalReport8プレビューがすぐ消える?

このQ&Aのポイント
  • VB6のアプリ内で作成したクリレポファイルを使用して印刷プレビュー&印刷を行おうとしていますが、プレビューが表示された瞬間すぐに閉じてしまいます。
  • サンプルのコードと同じように作成しているため、crwCR1.PrintReportの戻り値は0ですが、自分のコードでは異なる数値が返ってきます。
  • .rptファイルはサンプルと同じものを使用し、crwCR1.statusも設定されていますが、サンプルでは3であるのに対して、自分のコードでは4になっています。.statusの意味についても英語での情報が得られず、どこを調べても分からない状況です。教えていただけると助かります。
回答を見る
  • ベストアンサー

VB6 CrystalReport8 プレビューがすぐ消える?

現在アプリ内で取得したデータを事前に作っておいたクリレポファイルに入れて、印刷プレビュー&印刷をしようとしています。 サンプルを参考に同じように作ったのですが、プレビューが表示された瞬間すぐ閉じてしまいます。 crwCR1 ← CrystalReportコントロール crwCR1.Formulas(0) = "title='" & "一覧表'" crwCR1.ReportFileName = CurDir$ & "\CR1.rpt" Select Case Index Case 0 crwCR1.Destination = crptToWindow Case 1 crwCR1.Destination = crptToPrinter End Select Dim i As Integer i = crwCR1.PrintReport コードはこんな感じです。 わかっていることはサンプルの crwCR1.PrintReportの戻りは0。 自分のはなにやら数値が戻ります。 後違うところといえば crwCR1.status がサンプルは3 自分のは4になっています。 これは自分で設定しているのではなく.PrintReport時に値が入ってます。 .rptファイルもコピーして同じものを使ってます。 どこを調べても英語で.status が何なのかもわかりません。どうかご教授ください。

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

  • ベストアンサー
  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.2

こんにちは、じゃんぬねっと です。 ということは、以前はバウンド レポートでやっていたと予想されます。 バウンド レポートの場合、どこからデータを取得するかの情報が決定されます。 これがない場合は有無を言わさずに落ちてしまうことがあります。

anan23
質問者

お礼

いまさらですが。 解決いたしました。 どうもサンプルのクリレポをそのままつかっていたので、それにはクリレポにデータベースを接続するよう設定がしてありましたが、私はデータベースを使っていなかったのでその設定を解除すればうまくいきました。 ありがとうございました。

その他の回答 (1)

  • JeanneNet
  • ベストアンサー率48% (100/208)
回答No.1

こんにちは、じゃんぬねっと です。 恐らくプログラム側ではなく、レポート側の問題かと思います。 レポート側で予期せぬエラーが発生した場合は、何も起きずにすぐ閉じられてしまいますから。 レポート側から、データリフレッシュなどをしてデータが表示されるか確認してください。

anan23
質問者

お礼

回答ありがとうございます。 データリフレッシュ?すみませんあまりクリレポつかったことなくてちょっと、、。 いろいろ試したんですがサンプルのプロジェクトがあるフォルダにレポートファイルを置き、それを呼ぶようにするとちゃんと表示されました。なぜ? レポートファイルには何か付属情報みたいのがあるんでしょうか?

関連するQ&A

  • クリスタルレポート+文字列セット

    環境:Windows2000+VB5.0 既存システムの変更をしています。 VB5.0でつくっており、CrystalReportで レポート出力を行っています。 私はCrystalReportsを使ったことないのですが、 VBのフォームで 名前テキストボックス、社員番号テキストボックスがあり、 そこで印刷プレビューボタンをクリック、 そうするとプレビュー画面があがる、といった 場合、ヘッダーに名前テキストの内容と社員番号テキストの内容を 印字させたいのですが、どうしたらいいのでしょうか? 名前も社員もデータベースにあるものでなく、 フォームにあるテキストに入力されたものを使います。 ヘルプなどをみていると、 Rpt.Formulas(0) = "名前 = 'ああああ'" とやるとOKと書いていましたが、 その後、Rpt.Action = 1 でエラーになりました。(「式名が不正です。」) ちなみに、クリスタルレポートには、名前というテキストフィールドを ヘッダーにはりつけ、その部分をセットしようとしているのですが・・・ よろしくお願いいたします。

  • 印刷プレビュー表示後ユーザーフォームが閉じません。

     下記のコードで印刷プレビューが表示された後,UserForm3が閉じるようにしてありましたができなくなりました。プレビューの閉じるボタンをクリックするとUserForm3一緒に閉じます。解決策がありましたらお願いします。勉強不足でわかりませんので。 Sub 印刷範囲() Application.ScreenUpdating = False Dim ret As Integer ret = MsgBox("印刷範囲を、" & ActiveSheet.Range("B59").Value & "勤務表上に" _ & "表示します。  よろしいですか?", _ vbOKCancel + vbQuestion, "メイン処理") Select Case ret Case vbOK UserForm3.Show vbModeless UserForm3.Repaint With Worksheets("メイン") .PageSetup.CenterHorizontally = True .PageSetup.CenterVertically = True .PrintPreview End With Unload UserForm3 End Select Application.ScreenUpdating = True End Sub

  • 印刷時に自動で連番を振りたい(1頁に2か所)

    Excel2013使用です。 ※私はマクロの記録は出来ますが、VBAに関しては無知です。 【質問内容】 A4用紙に帳票を2枚作っています。(同じ物) 印刷時、帳票に連番を自動で振りたいです。 連番を振りたいセルは「D1」と「D16」です。 つまり、1枚目の紙には「1」「2」      2枚目の紙には「3」「4」 …と印刷されるようにしたいです。 (因みに、最後のページ数は都度変わります) ネットで見つけたVBAを利用して Sub Sample() Dim i As Long, myCnt As Long myCnt = Application.InputBox("印刷部数は?") On Error Resume Next Select Case myCnt Case False MsgBox "キャンセルされました" Case Else For i = 1 To myCnt * 2 Step 2 Range("D1") = i Range("D16") = i + 1 ActiveSheet.PrintPreview '<<--プレビュー画面が不要ならこの行を削除。 'ActiveSheet.PrintOut '<<--直接印刷するなら「'」を消去。 Next i End Select End Sub を実行してみましたが、上手く行きません。 (出てきたウィンドウに部数を入力しても、その通り印刷されません。 例えば「2部」と入力して、印刷画面のプロパティでは部数を指定せずに 印刷すると、最初の1頁だけが印刷されます。 試に印刷画面で2部にすると、今度は同じ紙(連番1と2)が2部印刷される だけです) どこを改良したらよいでしょうか…?

  • エクセルVBA:マクロの中にマクロ?

    度々よろしくお願いします。ボタンが複数あって、それぞれに記録されたマクロの一部分が共通している場合の処理について教えてください。 例えば、前回の質問でご回答いただいたモノを流用し、別の処理と複合させたマクロがあります。 この変数ixがボタン(それぞれのマクロ)ごとに異なる場合、Do While以下を別のマクロとして記録し、それぞれのマクロの中で Application.Run "TEST.xls!Macro1"などのようにできるのでしょうか?変数の扱いをどうして良いのかわかりません。 Sub test() ~別の処理 ix = 8 Do While Cells(ix, "D") <> ""   Select Case Trim(Cells(ix, "D"))   Case "背筋"     Range("AZ8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   Case "アーム"     Range("BA8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   Case "レッグ"     Range("BB8").Copy Destination:=Range(Cells(ix, "I"), Cells(ix, "AW"))   End Select   Range(Cells(ix, "I"), Cells(ix, "AW")).Copy   Cells(ix, "I").PasteSpecial Paste:=xlPasteValues   ix = ix + 1 Loop Range("I8").Select End Sub

  • Select Caseのisについて

    Isは変数名ではないですよね? Sub isを使った場合() Dim i As Long i = 2 Select Case i Case Is < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub 例えばこのようなサンプルの時、 Case Is < 3 の時は Case 2 < 3 Case i < 3 と同じ意味ですよね? という事は、is=i=2だと思ったのですが、 Sub 変数を使った場合() Dim i As Long i = 2 Select Case i Case i < 3 Debug.Print "3以下です" Case Else Debug.Print "3以上です" End Select End Sub だと、なぜか3以上ですになってしまいます。 ISの仕組みがよくわからないのですが、 Case Is < 3はCase 2 < 3 なってるわけではないのでしょうか?

  • 連続印刷中のMsgBox

    エクセルVBAで作業をしています iをFor・・・Nextで回し50枚程度の印刷を行うのですが、 途中15枚程度で続行か中止かをMsgBoxで振り分けを行いたいのですが プリントOUT処理の後 If i = 10 Then     ans2 = MsgBox("15枚印刷しましたまだ続けますか?", vbYesNo + vbInformation, "印刷実行")     Select Case ans2      Case vbYes     Select Case ans2      Case vbNo      Exit For      End Select Next i  End With  End Select End Sub 書くとNextに対するFORがありませんと出ました どうすれば良いでしょうか

  • Excel・VBAのコード教えてください。

    1シートに12ずつあるまとまりを印刷したくて下記のようなものを作成しました。 Worksheets("Sheet1").Select Last = Cells(1).CurrentRegion.Rows.Count Warizan = Abs(Last / 12)    ←12個以上の場合2、3…以下は1となる。 Kaisuu = Left(Warizan, 1) For r = 1 To Kaisuu      ←回数分繰り返す For i = 2 To Last      ←シート1に書かれたデータの最終行まで。 Worksheets("Sheet1").Select Company = Cells(i, 1) Yuubin = Cells(i, 2) Address = Cells(i, 3) Worksheets("Sheet2").Select Select Case i Case (Kaisuu * 12) - 10 Range("D4") = Yuubin Case (Kaisuu * 12) - 9 Range("AF4") = Yuubin        : Case (Kaisuu * 12) - 1 Range("AF45") = Yuubin Case (Kaisuu * 12) Range("D56") = Yuubin Case (Kaisuu * 12) + 1 Range("AF56") = Yuubin End Select Next ActiveWindow.SelectedSheets.PrintPreview Next とした時に、最終ページが2回、もしくは3回…と表示されてしまいます。 例えばデータが25個あったとして、1ページ目(12個分)が終ったらプレビュー、残りの2ページ目(1個分)を表示、としたいのです。 よろしくお願いします。

  • VBAエクセルにて印刷

    こんにちわ。教えてください。VBAでActiveXコントロールをクリック したのち、印刷のプレビューを表示したら、MegBoxメッセージを表示 させ ”はい””いいえ”を選択したいのですがうまくいきません。 ちなみに下記のプログラムです。 Private Sub 印刷_Click() ActiveWindow.SelectedSheets.PrintPreview Dim ans As Integer ans = MsgBox("印刷しますか?", vbInformation + vbYesNo, "確 認") Select Case ans Case vbYes Application.ActivePrinter = "Canon iR C3080/C3580 LIPSLX on Ne05:" ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)" Case vbNo MsgBox "故障履歴印刷をキャンセルします。" End Select End Sub 以上なんですがプレビュー後に”印刷しますが”が聞いてきません。 どうすればいいですか?

  • マクロを使って印刷範囲を指定したのに

    エクセルでボタンをクリックすると印刷範囲を指定し印刷プレビューまで行えるようにマクロを登録しました。 (A~C列+J~U列)を印刷したいので、D~I列を非表示にし、その後A~Uを選択→印刷→選択した部分にチェック→印刷プレビュー→印刷の方法でマクロ登録しました。登録作業中は正しく印刷できましたが、実際にボタンをクリックするとプレビューには(A~C列+M~U列)しか表示されません。 何度やり直してもダメで、D:Oを非表示にしてA:AAを選択後に印刷プレビューする場合は(A~C列+P~AA列)が正しく印刷できました。非表示にする列が違う場合はできたのに、どこがいけないのでしょうか? 以下のような感じになっています。 Columns("D:I").Select Selection.EntireColumn.Hidden = True Range("A4:U43").Select Selection.PrintOut Copies:=1, Preview:=True, Collate:=True ActiveWindow.LargeScroll Down:=-1 Columns("C:J").Select Selection.EntireColumn.Hidden = False End Sub 説明がうまくできないのですが、宜しくお願いします。

  • EXCEL 印刷時のVBAでのフッター制御

    こんにちは。 Excel2000でVBAを使用して、印刷プレビューもしくは印刷処理を行なっています。 (数十枚あるシートから10ページほどを印刷) 処理が実行された際に、以下のモジュールでフッターを挿入しているのですが、 For i = 1 To 10 With Sheets(i).PageSetup .RightFooter = "sample" End With Next 印刷プレビューの場合、使用者がプレビュー画面の「設定」ボタンを クリックしてフッターを書き換えられてしまいます。 これを書き換えられないように(もしくは書き換えても最終的には こちらが指定した文字で出力できるように)したいのですが、何か良い方法はありませんでしょうか。 Workbook_BeforePrint(Cancel As Boolean) で処理を行なっても手動変更が優先されていました。 どうぞ良い智恵をご教授ください!よろしくお願い致します。

専門家に質問してみよう