Excel VBAでさまざまな表印刷を行う - コード編
瀬戸 遥 [著] 2007/05/08 08:00

バイナリファイル 90.02 KB
サンプルソース 141.18 KB

データベースからデータをワークシートに落としたとき、1ページに収まるのかどうか、何ページになるのか気になりますよね。また、落とし込んだデータを何とかページ内に収めるような操作を自動化できたら便利です。そこで、Excel VBAで「ページ設定」と「印刷」の2つの操作を組み合わせて、データベースから取得したデータの作表・印刷処理を自動化するテクニックを紹介します。

1 2 3 →
ユーザーフォームでクエリの選択やオートフォーマット・印刷設定を行い印刷する、オリジナル印刷ダイアログを作成する
ユーザーフォームでクエリの選択やオートフォーマット・印刷設定を行い印刷する、オリジナル印刷ダイアログを作成する
データベースからクエリを実行して取得したデータをセルに転送し、セルの列幅を計算して、印刷する用紙や印刷方法を自動的に切り替える
データベースからクエリを実行して取得したデータをセルに転送し、セルの列幅を計算して、印刷する用紙や印刷方法を自動的に切り替える
ユーザーフォームでクエリの選択やオートフォーマット・印刷設定を行い印刷を実行する印刷ダイアログを作成する
ユーザーフォームでクエリの選択やオートフォーマット・印刷設定を行い印刷を実行する印刷ダイアログを作成する

はじめに

 データベースからデータをワークシートに落としたとき、1ページに収まるのかどうか、何ページになるのか気になりますよね。また、落とし込んだデータを何とかページ内に収めるような操作を自動化できたら便利です。

 そこで、Excel VBAで「ページ設定」と「印刷」の2つの操作を組み合わせて、データベースから取得したデータの作表・印刷処理を自動化するテクニックを紹介します。

 1つはコードですべての処理を自動実行する方法、もう1つはユーザーフォームを使用し、いくつかの設定を選んで印刷を行う方法です。

 なお、Excel 2007でも動作することを確認しています。

対象読者

 Excel VBAを使ってマクロ(プログラム)を作ったことのある人、Visual Basicを使える人が対象です。

必要な環境

 Excel 2000/2002/2003/2007が使用できる環境。

マクロ実行時の注意事項

 Accessのデータベースファイル「msdata.mdb」を、マクロを実行するブックと同じフォルダにおいてください。

処理の流れ

 このマクロは、次のような処理を実行します。

コードバージョン

  1. データベースを開きクエリを実行し、データをセルに転送します。
  2. データベースは、「ガンダムモビルスーツデータ」を収録した、5つのフィールドを持ったAccess形式のデータベースです。
     
  3. インプットボックスを使用して表のタイトルを入力してもらいます。
  4. また、セルの列幅を入力データにあわせます。
     
  5. 罫線を設定するかどうかをメッセージボックスでユーザーに問い合わせ、罫線を設定します。
  6.  
  7. データが入力されたセルのすべての列幅を計算し、A4サイズの用紙に収まるのかどうかを判断します。そして、その結果により用紙を縦で印刷するのか横で印刷するのか、また縮小印刷でページ内に収めて印刷するかどうかを決めます。
  8.  
  9. 用紙を切り替えて印刷する処理は、引数を持ったSubプロシージャで、データベース処理はクエリ結果の総レコード数を返すFunctionプロシージャで作成します。
  10.  
  11. 印刷設定では、PageSetupオブジェクトの各プロパティを使用して、上下左右のマージン設定やヘッダーの設定、用紙の方向やページ内に収める設定などを行います。

ユーザーフォームバージョン

  1. ユーザーフォームを使用して、複数のクエリをドロップダウンリストボックスで表示し、実行するクエリをユーザーに選んでもらうようにします。
  2.  
     
     
  3. フレームコントロールとトグルボタンコントロールを組み合わせて、作成した表にオートフォーマットを設定できるようにします。
  4.  
    このフレームコントロールは、スクロールバーを設定し複数のトグルボタンコントロールをスクロール表示できるようにします。また、トグルボタンコントロールは、表面にオートフォーマットの状態をキャプチャした画像を組み込んで、視覚的に実施効果が判るようにします。
     
  5. 表のタイトルはテキストボックスで、その他の印刷設定をチェックボックスとスピンボタンコントロールを使い、ユーザーからの入力を受け付けるようにします。
  6.  
  7. データベース処理、印刷方法の自動切換えは、コードバージョンで作成したプロシージャを呼び出して使用するようにします。
このプログラムで使用したVBAの機能
種類内容
<Excel VBA>AutoFitメソッドでセル幅をデータサイズに合わせる
Widthプロパティでセル幅をポイント単位で取得する
PrintOutメソッドでワークシートを印刷する
PageSetupオブジェクトによるページ設定操作
PaperSizeプロパティで用紙サイズを設定する
LeftMargin・RightMarginプロパティで余白設定
CentimetersToPointsメソッドを使った単位換算処理
Left・Right・CenterHeaderプロパティでヘッダー設定
FitToPagesWideプロパティで印刷範囲をページ内に収める
Bordersオブジェクトによる罫線設定操作
AutoFormatメソッドでオートフォーマットを設定する
PrintHeadingsプロパティで行列番号を印刷
BlackAndWhiteプロパティで白黒印刷を設定
<フォームとコントロール>フレームのScrollBars・ScrollHeighプロパティで垂直スクロールバーを設定
スピンボタンのMin・Maxプロパティで動作範囲を設定
トグルボタンを使ったラジオボタン動作処理
<DAO>CreateQueryDefメソッドによるクエリの実行
RecordCountプロパティでクエリ結果のレコード数を把握する
MoveFirst・MoveLast・MoveNextメソッドでカレントレコードを移動
<VBA>Round関数による小数点の桁丸め操作

1 2 3
→
INDEX
VBAでデータベースからの作表・印刷処理を自動化する 1
Page1
はじめに
対象読者
必要な環境
マクロ実行時の注意事項
処理の流れ
コードバージョンの印刷自動処理-データベース操作-リスト1
メインの印刷処理の作成-リスト2
用紙切り替え処理-リスト3
1枚の用紙に収めて印刷する処理と罫線操作-リスト4
まとめ
プロフィール
瀬戸 遥 セト ハルカ

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再入門」(翔泳社)、など。


記事へのコメント・トラックバック機能は2011年6月に廃止させていただきました。記事に対する反響はTwitterやFacebook、ソーシャルブックマークサービスのコメントなどでぜひお寄せください。

スポンサーサイト