じゃばのひまつぶし:ExcelVBAによる競馬ソフト自作教室とJRA-VAN登録ソフト(おずたんシリーズ)のサポートサイトです。
 JRA-VAN Data Lab対応 登録ソフト おずたん(Oztan13.xls)

     「おずたん便利ツール」  
おずたん利用マニュアル(便利ツール)

更新:2016-02-28
 このページを閉じる時は右上の[×]部分をクリックしてください。

プリント機能マクロ[OztanTool.xls]
当初、「レース一覧表」と「各場所シート」(最大3場所分)を自動プリントする機能を搭載する予定でしたが、JRA-VANのプリンタではエラーになるため削除しました。
その削除したプリント機能をマクロにしたものが「OztanTool.xls」です。
(「おずたん」のプログラムコードはロックされているため、ユーザーが「おずたん」自体ににマクロを追加することはできません)

ただし、私が確認したのはキャノンのインクジェットのBJS500です。他のプリンタではうまくいくかどうかわかりません。エラーになる場合もあると思いますが、マクロ(プログラム)は自由に読めますので、ユーザーが修正すれば使えるかもしれません。
キャノンのプリンタなら縮小率を変更するだけで動くかも。。。


[機能]
@「おずたん」(OZTAN.xls)の”レース一覧表”および”各場所シート”をプリントする機能。
それぞれ専用のボタンがあります。
A”各場所シート”プリントは、最大3場所分を連続してプリントします。
Bプリント縮小率(倍率)はデフォルト値を設定済みですが、ユーザーが変更できます。(用紙サイズは“A4”のみ)

[使い方]
@ダウンロードした「OztanTool.xls」ファイルを任意のフォルダに保存してください。(Excel形式そのままです)
A「OztanTool.xls」を”マクロを有効”にして起動してください。
B「おずたん」(OZTAN.xls)を起動してください。(OztanTool.xlsと起動する順番はかまいませんが、「おずたん」が起動していないとプリントはできません。
Cプリンタの電源はオンにして、パソコンとの接続はあらかじめ行っておいてください。
D”レース一覧表プリント”あるいは”各場所シートプリント”ボタンでプリントを実行してください。
Eプリント結果が正常であればそのまま使えます。全体がA4一枚に入らない場合は、シートの縮小率を小さくして再実行してください。
デフォルト値:”レース一覧表” 85%、”各場所シート” 65%
Fもしエラーが起こるようであれば、Excelのマクロを修正してください。マクロプログラムの知識が若干必要ですが、単純な修正で済むかもしれません。





(注意)「おずたん」のファイル名は必ず一緒にしてください。もしユーザーが別名で保存した「おずたん」をプリントしたい場合は、そのファイル名を”B4"セルに記入してください(大文字・小文字まで一致させて)。

このツールは”レース一覧表”、”各場所シート”以外のシートのプリント機能はありません。またアルバム内にも類似のシートがありますが、その自動プリント機能はありません。

[プログラムの動作説明]
OztanTool.xlsは2つのプログラムを含み、それぞれ上図の2つのボタンに割り当てられています。
“レース一覧表プリント”---「おずたん」のトップページをプリントします。
“各場所シートプリント”---「おずたん」の“場_XX”とある場所別のオッズ分析表を最大3枚連続してプリントします。
2つのプログラムはプリントする枚数が1枚のみか3枚かの違いだけでプリンタ設定そのものはほとんど同じなので、“レース一覧表プリント”の方で説明します。
下図がその動作のフローチャートです。

@プリントボタンを押すとまず、“B4”セルに入っている「おずたん」のファイル名を調べます。デフォルトではOZTAN.xlsとなっていますが、もし空白の場合は、メッセージを出して終了します。

A次に“C4”セルの数値を得てプリンタの縮小率を設定します。空白もしくは100%超の場合はデフォルトの85%に設定。

B次に「おずたん」がオープンになっているかどうかチェックします。これは他に開いているExcelアプリがいくつあってもかまいません。なければメッセージを出して終了。

以上は、“各場所シートプリント”でも共通です(縮小率が違うだけ)。

Cようやくプリント実行です。
この部分がプリンタのメーカー・機種により違いが出る箇所です。たぶんここを変更すればユーザーの環境にあったプリント設定ができると思います。この内容は“各場所シートプリント”でもそのまま使えます。

Dもしエラーが出ると、エラーの箇所でストップします(厳密にはエラー箇所の下)。そこを根気よく修正すればいいと思います。
修正方法は下記を参考にしてください。


[マクロプログラム(VBA)の修正(デバッグ)]
マクロプログラムを修正する場合は、Visual Basic Editorモードで行います。
Excelのメニューバーで、「ツール」→「マクロ」→「Visual Basic Editor」で切り替えてください(下図参照)


------------------------------------------------------------
プログラムコードが表示されます(下図)。
プログラムが表示されない場合は、左のプロジェクト・ウィンドウの中の標準モジュール(OT_mod1)をダブルクリックしてください。


------------------------------------------------------------
プログラムコード・ウィンドウには2つのプログラムがあります。
Sub 〜 End Subで囲まれた範囲が1つのプログラムです(下図)。




--------------------------------------------------------------
修正する前にプログラムコードを印刷しておくほうがいいでしょう。
「ファイル」→「印刷」でプリンタを設定します。


“印刷範囲の選択”で「カレントモジュール」を、“印刷対象”は「コード」を選択、印刷品質は任意、印刷用紙や両面印刷などは「設定」で調節してください。「OK」を押せば印刷が始まります。



---------------------------------------------------------------
コード画面で次のようなメニューバーが出ていることを確認してください。





“編集メニューバー”が表示されない場合は、次のようにして表示させておいてください。
「表示」→「ツールバー」→「編集」で上図の“編集メニューバー”が表示されます。位置はどこでもかまいません。


------------------------------------------------------
“レース一覧表プリント”プログラム
プログラムのはじめの方にある On Error Goto ErrHandler は“エラーが発生した場合はErrHandlerというエラー処理ルーチンに飛ぶ”というコードです。
実際にエラーになるとプログラムの最後の方にある処理ルーチン(ErrHandler)にジャンプします。
プリンタのエラーではたぶんElse以下の部分に行きます。このときの対処方法は後述します。




省略したコード部分は下図のようになっています。前述のフローチャートと対比してご覧ください。




ここから下が実際のプリント動作です。


(PrinterNameにユーザーのプリンタ名が設定されます)

次のコードで印刷範囲を設定します。「レース一覧表」の場合は、“A1:AS50”のセル範囲が対象になります。ここを変更すれば印刷範囲が変わります。


以下の部分がプリンタの設定部分です。ここをユーザーのプリンタ機種により変更・削除が必要な箇所です(特に四角で囲った部分)。


次のコードは印刷前にプレビューをするかどうかの設定です。プレビューなしにしていますが、プレビューしたい場合は、次のコードの下の方を使ってください(Preview:=True)。


次はプリントが終了した後の処理です。


以上が“レース一覧表プリント”のプログラムです。

実際にプリントを実行してエラーが発生したときの対処方法を説明します。
ここで説明する方法は、実際に走らせて、エラーが発生したらその内容を見ながら修正する方法です。(VBAをご存知の方は直接修正してください)

@エラーが発生すると何らかのメッセージが出ると思います。「OK」をおしてメッセージを閉じてください。(あるいは「デバッグ」の表示があるメッセージが出たら、「デバッグ」をクリックしてください)

AErrHandlerルーチンの"Stop"箇所が黄色くなって止まると思います。この時点でファンクションキー「F8」を押してください。(ステップイン動作にする)あるいは下図のように「ステップイン」を選択。「デバッグ」→「ステップイン」


Bさらに「F8」キーを押すと1ステップずつプログラムを進めることができます。
"ResumeNext"になるので、さらに「F8」を押すとプログラムのどこかに飛びます。ResumeNextというのは、エラーが起こったら、そこを飛ばしてその次に行けという命令なので、この飛んだところの上が実際にエラーが発生した箇所と思われます。

Cいったんプログラムを止めます(実行を中止)。下図の「リセット」を押してください。


DBで見つけたエラー箇所のコードを削除します。
エラー箇所のコードの部分を左クリックして、下図の”編集メニューバー”のコメントブロックをクリックします。コード行が緑色に変わります。これでこの行がコメント扱いになります。コメント行はプログラムの実行が行われないので”削除”したと同じことです。


E再び「レース一覧表プリント」ボタンを押し、プリントを実行します。
先ほどのエラー箇所が削除してもいい箇所であれば、そこを通過して、次のエラー箇所で止まります。そうしたら最初の@からの手順を繰り返してください。

F最終的にエラーなしにプリントが実行できれば修正完了です。出来上がったプログラムを”上書き保存”あるいは”別名で保存”しておいてください。次はこのボタンを押せば問題なくプリントができるはずです。(“各場所シートプリント”の方も同様にして修正してください)

VBAをご存知の方は、直接コードを修正していただくほうが、手っ取り早いと思います。


以上の方法で修正ができない場合は、一度、マクロの自動記録で実際にプリンタを使ってみて、その内容を見比べながら修正する方法が必要です。
この方法は少しややこしいので、省略します。どうしても上記方法でうまく直らない場合は、ご連絡ください。

[修正成功例]
下記は、うまくプログラムの修正ができた例です。ご参考まで。
(1)kanekoさんの例 (06-07-28)
@プリンタ機種:ヒューレットパッカード(HP)-hp deskjet 840Cシリーズ
Aエラー内容:“1004 PageSetup クラスのPrintQualityプロパティを設定できません”
Bエラー原因:HPプリンタのプリント品質プロパティの設定が、キャノンと異なるためのようです。
C修正方法:プログラムの中のプリンタ設定部分で「プリント品質の程度」というコメントの下に
 .PrintQuality = -3 という箇所がありますが、この行の前に半角のアポストロフィー(')を追加してこの行のコードをコメント化することで無視できます。これでうまくプリントができるようになったとのことです。(実際のプリンタ印字品質は別途設定してください)
Dそのほか、「各場所シートプリント」では、一番下の1R〜4Rの”配当”部分が別のページになった問題は、縮小率を64%にしたら、1枚に収まったとのことです。
(修正したプログラムは、必ず別名で保存するか上書き保存してください)



本プログラムの使用による損害・支障については責任を持てません。ユーザーのご判断でお使いください。

ページトップへ
 Copyright(C):Jaba 2000-2016