Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

VBAでデータベースからの作表・印刷処理を自動化する 1

Excel VBAでさまざまな表印刷を行う - コード編

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/05/08 08:00

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

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

はじめに

 データベースからデータをワークシートに落としたとき、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関数による小数点の桁丸め操作

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

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

バックナンバー

連載:Excel VBAでさまざまな表印刷を行う
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5