SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Excel VBAでさまざまな表印刷を行う

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

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


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

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

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
コードバージョンの印刷自動処理-データベース操作-リスト1

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Excel VBAでさまざまな表印刷を行う連載記事一覧
この記事の著者

瀬戸 遥(セト ハルカ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1250 2008/08/19 17:53

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング