オートメーション機能を利用してAccessのデータをExcel経由で編集して印刷するお手本コード集(応用編)

図6-2-1 AccessからExcelを起動してワークシート上にクロス集計クエリを貼り付けて整形、印刷するサンプルコード集
このサンプルデータベースでは、ワークシート上にクエリの結果を貼り付けて、書式を設定したり、罫線を引いて印刷するまでのノウハウをサンプルコード集として紹介します。基礎編でAccessからExcelを起動する方法、ワークシートにレコードセットを貼り付ける方法などを紹介しました。ここでは、基礎編で習得したノウハウを基にクロス集計クエリをワークシートに貼り付けて、整形して印刷するノウハウを紹介します。
メニューのリストボックスからアイテムをクリックして、Show Codeボタンをクリックすると、サンプルコードがVBE上に表示されます。Run Exampleボタンをクリックすると、サンプルプログラムを実行しますので、実行結果を確認することができます。
メニューからShow Code/Run Exampleボタンをクリックしたときの処理については、基礎編で解説していますのでそちらを参照してください。
サンプルデータベース(CH6-2.mdb)では、以下に示すノウハウを習得することができます。
◆ クロス集計クエリの作り方
◆ クロス集計クエリをワークシートに貼り付ける方法
◆ ワークシートに作成した表の列合計/行合計を計算する方法
◆ ワークシートに作成した表に格子型の罫線を引く方法
◆ ワークシートに印刷の見出しを設定する方法
◆ ワークシートを印刷する方法
● サンプルデータベースで使用するテーブル/クエリを準備するには
1 Access を起動したら作業フォルダに、新規データベース CH6-2.mdbを作成します。
2 メニューから外部データの取り込み、テーブルのリンクをクリックします。リンクのダイアログが表示されたら、Access のサンプルデータベースNorthwind.mdbを選択してリンクボタンをクリックします。(Northwind.mdbは、デフォルトでは”C:\Program Files\Microsoft Office\Office\Samples”にインストールされます。)
3 テーブルのリンクのダイアログが表示されたら、すべて選択のボタンをクリックします。最後に、OKボタンをクリックしてリンクを完了させます。

図6-2-2 Northwind.mdbの全てのテーブルをリンクさせる
4 テーブルをリンクしたら、データベースウィンドウにNorthwind.mdbの全てのテーブルが表示されているか確認します。
5 データベースウィンドウからクエリ
をクリックしたら、一覧からデザインビューでクエリを作成するをダブルクリックします。テーブルの表示ダイアログが表示されたら、閉じるのボタンをクリックして閉じます。メニューからSQLのアイコン
をクリックして、SQLビューのウィンドウを表示させたら、リスト6-2-1を入力します。(SQLを入力する代わりに、CH6-2.mdbからqry商品区分別売上をインポートしてもよい。)クエリをデザインビューに切り替えたら、図3-2-3のようになっているか確認します。クエリをqry商品区分別売上の名称で保存して閉じます。
リスト6-2-1 qry商品区分別売上のSQLコマンド
|
SELECT 商品.区分コード, 商品区分.区分名, Format([受注日],"yy/mm") AS 受注年月, [受注明細]![数量]*[受注明細]![単価] AS 金額, 受注.受注日 FROM (商品区分 INNER JOIN 商品 ON 商品区分.区分コード = 商品.区分コード) INNER JOIN (受注 INNER JOIN 受注明細 ON 受注.受注コード = 受注明細.受注コード) ON 商品.商品コード = 受注明細.商品コード ORDER BY 商品.区分コード; |

図6-2-3 qry商品区分別売上をデザインビューで表示した例
6 一覧からデザインビューでクエリを作成するをダブルクリックして、SQLビューのウィンドウを表示させたら、リスト6-2-2を入力します。(代わりにCH6-2.mdbのqry商品区分別売上クロス集計をインポートしてもよい。)クエリをデザインビューに切り替えたら、図6-2-4のようになっているか確認します。クエリをqry商品区分別売上クロス集計の名称で保存して閉じます。
リスト6-2-2 qry商品区分別売上クロス集計のSQLコマンド
|
TRANSFORM Sum(qry商品区分別売上.金額) AS 値 SELECT qry商品区分別売上.区分名 FROM qry商品区分別売上 WHERE (((qry商品区分別売上.受注日) Between #1/1/1990# And #12/31/1999#)) GROUP BY qry商品区分別売上.区分コード, qry商品区分別売上.区分名 ORDER BY qry商品区分別売上.区分コード PIVOT qry商品区分別売上.受注年月; |

図6-2-4 qry商品区分別売上クロス集計をデザインビューで表示した例
7 テーブルとクエリの準備が完了したら、Accessを終了させます。
● クロス集計クエリをワークシートに貼り付けるには
1 Accessを起動したら、作業フォルダに作成した CH6-1.mdbを開きます。
2 データベースウィンドウが表示されたら、モジュール
タブをクリックして新規作成ボタンをクリックします。
3 VBEが起動されてモジュールウィンドウが表示されたら、VBEのツールメニューから参照設定をクリックします。参照設定のダイアログが表示されたら、参照可能なライブラリファイルからMicrosoft Excel X.0 Object LibraryとMicrosoft DAO 3.6 Object Libraryを選択してOKボタンをクリックします。Visual Basic For Application, Microsoft Access X.0 Object Library, OLE AutomationそしてMicrosoft ActiveX Data Object 2.1 Libraryは、既に選択されています。

図3-2-5 リストボックスからMicrosoft Excel 9.0 Object Library、Microsoft DAO 3.6 Object Libraryを選択した例
4 モジュールウィンドウにも戻ったらCH6-2.mdbを開いてbasAutomation1のSample1をコピーして貼り付けます。
5 VBEの表示メニューからイミディエイトウィンドウをクリックして表示させます。イミディエイトウィンドウにSample1を入力したら、リターンキーを押して実行させます。Excelが起動されて、Excelの画面に切り替わります。

図6-2-6 クロス集計クエリがワークシート上に貼り付けられた例
6 WindowsのタスクバーからAccessのアイコンをクリックしてフォーカスを移動します。”Hello Sample1”のメッセージが表示されていますので、OKボタンをクリックしてExcelを終了させます。
7 Sample1をbasAutomation1の名称で保存して、Access を終了させます。
Function Sample1()の説明
Sample1では、VBAからExcel を起動して、クロス集計クエリをワークシートに貼り付けます。DatabaseオブジェクトのOpenRecordsetメソッドでクロス集計クエリを開きます。
Set db = CurrentDb
Set rs = db.OpenRecordset("qry商品区分別売上クロス集計")
CreateObject()でExcelのインスタンスを生成したらポインタをxlAppに設定します。
Set xlApp =
CreateObject("Excel.Application")
xlApp.Workbooks.Add
WorkbooksオブジェクトのAddメソッドでワークシートを追加したら、セル(A1)から右側に列見出しをセットします。For intFld = 0 To .Fields.Count – 1…Nextループで、セルのアドレスをA1,B1,C1,・・・のように順番に変えてフィールド名をセットします。
intRow = 1
For intFld = 0 To .Fields.Count - 1
xlApp.Cells(intRow, intCol).Value = .Fields(intFld).Name
intCol = intCol + 1
Next
列見出しをセットしたら、RangeオブジェクトのCopyFromRecordsetメソッドを使用して、セル(A2)を基点にレコードセットの内容をコピーします。
.Range("A2").CopyFromRecordset rs
Excelの可視(Visible)プロパティをTrueに設定して、可視状態に切り替えてから、MsgBoxを実行して応答を待ちます。Accessが待ち状態になると、画面がExcelに切り替えられて、ワークシートが表示されます。
“Hello Sample1”のメッセージに対してOKボタンをクリックすると、ワークシートを閉じて、Excelを終了させます。
リスト6-2-3 Sample1()のソースコード
|
Function Sample1() ' ' 商品区分別売上のレコードセットをワークシート上にコピーするには ' Dim db As DAO.Database Dim rs As DAO.Recordset Dim xlApp As Excel.Application Dim rngRange As Excel.Range Dim rngData As Excel.Range Dim rngData2 As Excel.Range Dim rngTotal As Excel.Range Dim intRow As Integer Dim intCol As Integer Dim intFld As Integer
Set db = CurrentDb Set rs = db.OpenRecordset("qry商品区分別売上クロス集計") If rs.EOF Then Exit Function End If
Set xlApp = CreateObject("Excel.Application") If xlApp Is Nothing Then MsgBox "MS Excel 9.0 is not installed on your computer" Exit Function End If
DoCmd.Hourglass True
With xlApp .Workbooks.Add With rs ' Accessのフィールド名をExcelのカラムヘッダーとして使用する intRow = 1 intCol = 1 For intFld = 0 To .Fields.Count - 1 xlApp.Cells(intRow, intCol).Value = .Fields(intFld).Name intCol = intCol + 1 Next End With
' AccessのデータをExcelのA2を基点として取り込む .Range("A2").CopyFromRecordset rs
' Excelを可視状態にする .Visible = True
MsgBox "Hello Sample1"
On Error Resume Next .ActiveWorkbook.Close False .Quit
End With
rs.Close db.Close Set rs = Nothing Set db = Nothing Set xlApp = Nothing
End Function |
Tip
|
ワークシートにレコードセットのフィールド名をセットするには、For intFld=0 To .Fields.Count – 1…Nextを使用する他に、For Each…Nextを使用する方法があります。fld.Name, fld.Value,fld. Attributesなどのようにフィールドの複数のプロパティを参照するときは、For Each…Nextの方が高速です。 Dim fld As DAO.Field intRow = 1 intCol = 1 For Each fld In .Fields xlApp.Cells(intRow, intCol).Value = fld.Name intCol = intCol + 1 Next fld |
● ワークシートに作成した表の列合計/行合計を計算するには
1 Access を起動したら作業フォルダに作成した CH6-1.mdbを開きます。
2 データベースウィンドウが表示されたら、モジュール
タブをクリックして新規作成ボタンをクリックします。
3 VBEが起動されてモジュールウィンドウが表示されたら、CH6-2.mdbのbasAutomation2からSample2をコピーして貼り付けます。
4 VBEの表示メニューからイミディエイトウィンドウを表示させて、Sample2を実行させます。Excelが起動されてSample1で作成した表の列合計(年月合計)、行合計(区分合計)が計算されます。

図6-2-7 ワークシートに作成した表の列合計、行合計を計算した例
5 フォーカスをAccess に移動すると、”Hello Sample2”のメッセージが表示されていますので、OKボタンをクリックしてExcelを終了させます。
Function Sample2()の説明
Sample2では、Sample1で作成した表の受注年月と商品区分の合計を計算します。ActiveSheetオブジェクトのUsedRangeプロパティで表の範囲をrngRangeに設定します。
Set rngRange =
.ActiveSheet.UsedRange
表の合計を計算するには、図6-2-8に示すように、列見出し(受注年月)、行見出し(商品区分名)を除くデータ部分の範囲を求めてrngDataに設定します。rngRangeオブジェクトのOffset(1, 1).Resizeは、セル(B2)を基点に範囲を再設定することを意味します。列見出し、行見出しを除くには、Resize()の引数にrngRangeの行数/列数から1減じた数値を指定します。
rngRange.Rows.Count - 1, _
rngRange.Columns.Count - 1)
rngData.Offset(rngData.Rows.Count).Rows(1)で、受注年月別合計の計算式を埋め込む範囲をrngTotalに設定したら、RangeオブジェクトのFormulaプロパティで計算式(SUM関数)を埋め込みます。rngTotal.Offset(0, -1).Columns(1)で見出しのセルアドレスを求めて、“年月合計”をセットします。
Set rngTotal = _
rngData.Offset(rngData.Rows.Count).Rows(1)
rngTotal.Formula =
"=Sum(" _
& ")"
rngTotal.Offset(0, -1).Columns(1) = "年月合計"
商品区分別の合計には、年月合計の行も含めますので、rngData.Rows.Count + 1でrngDataの行数に1行加算した範囲をrngData2に設定します。
rngData.Columns.Count)
rngData2.Offset(0, rngData2.Columns.Count).Columns(1)で、rngTotalに商品区分別合計を表示する範囲を設定したら、RangeオブジェクトのFormuraプロパティで計算式(SUM関数)を埋め込みます。rngTotal.Offset(-1, 0).Rows(1)で、見出しのセルアドレスを求めて“区分合計”をセットします。
Set rngTotal =
rngData2.Offset(0, rngData2.Columns.Count).Columns(1)
rngTotal.Formula = "=Sum(" &
rngData2.Rows(1).Address(False, False) & ")"
rngTotal.Offset(-1, 0).Rows(1)
= "区分合計"

図6-2-8 表の列見出し、行見出しを除くデータの範囲をrngDataに設定
リスト6-2-4 Sample2()のソースコード(Sample1に追加された部分のみ掲載)
|
' AccessのデータをExcelのA2を基点として取り込む .Range("A2").CopyFromRecordset rs ‘--------------------------------------------------------- ここから ' rngDataにデータ部分の範囲を設定する Set rngRange =
.ActiveSheet.UsedRange Set rngData = _
rngRange.Offset(1, 1).Resize( _
rngRange.Rows.Count - 1, _
rngRange.Columns.Count - 1) ' 受注年月別の合計を計算する Set rngTotal = _
rngData.Offset(rngData.Rows.Count).Rows(1)
rngTotal.Formula = "=Sum(" _
& rngData.Columns(1).Address(False, False) _
& ")"
rngTotal.Offset(0, -1).Columns(1) = "年月合計"
' 商品区分別の合計を計算する Set rngData2 = _
rngData.Offset(0, 0).Resize(rngData.Rows.Count + 1, _
rngData.Columns.Count) Set rngTotal = _
rngData2.Offset(0, rngData2.Columns.Count).Columns(1)
rngTotal.Formula = "=Sum(" _ &
rngData2.Rows(1).Address(False, False) _
& ")"
rngTotal.Offset(-1, 0).Rows(1) = "区分合計" ‘--------------------------------------------------- ここまで追加 ' Excelを可視状態にする .Visible = True |
● ワークシートに作成した表に格子型の罫線を引くには
1 Access を起動したら、作業フォルダに作成した CH6-1.mdbを開きます。
2 データベースウィンドウが表示されたら、モジュール
タブをクリックして新規作成ボタンをクリックします。
3 VBEが起動されてモジュールウィンドウが表示されたら、CH6-2.mdbのbasAutomation3からSample3をコピーして貼り付けます。
4 VBEの表示メニューからイミディエイトウィンドウを表示させて、Sample3を実行させます。Excel が起動されて、Sample2で作成した表に格子型の罫線を引きます。

図6-2-9 ワークシートに作成した表に格子型の罫線を引いた例
5 フォーカスをAccess に移動すると、”Hello Sample3”のメッセージが表示されていますので、OKボタンをクリックしてExcel を終了させます。
Function Sample3()の説明
Sample3では、Sample2で作成した表に格子型の罫線を引きます。ActiveSheetオブジェクトのUsedRangeプロパティで表の範囲をrngRangeに設定します。
Set rngRange =
.ActiveSheet.UsedRange
表に格子型の罫線を引くには、一連のSelection.Bordersプロパティで罫線の線種、格子の角の書式などを設定します。
表に格子型の罫線を引いたら、rngRange.Offset(0, 0).Rows(1).Selectで列見出しの範囲を、rngRangeに設定して範囲を選択します。SelectionオブジェクトのHorizontalAlignmentプロパティにxlCenterを設定して、列見出しをセンタリングします。
rngRange.Offset(0, 0).Rows(1).Select
With .Selection
.HorizontalAlignment = xlCenter
End With
更に、RangeオブジェクトのAutoFitメソッドを使用して、列見出しの幅を自動調整します。
rngRange.Offset(0, 0).Columns(1).AutoFit
RangeオブジェクトのOffset.Resize()プロパティを使用して、rngRangeに設定されている表の範囲から列見出し、行見出しを除いたデータ部分の範囲をrngDataに設定します。rngData.Selectで、表のデータ部分を選択したら、NumberFormatLocalプロパティに金額の書式 "#,##0"を設定します。
rngRange.Rows.Count - 1, _
rngRange.Columns.Count - 1)
rngData.Select
.Selection.NumberFormatLocal = "#,##0"
リスト6-2-5 Sample3()のソースコード(Sample2に追加された部分のみ掲載)
|
rngTotal.Offset(-1, 0).Rows(1) = "区分合計"
‘----------------------------------------------------------ここから ' 罫線を引く
.ActiveSheet.UsedRange.Select
.Selection.Borders(xlDiagonalDown).LineStyle = xlNone
.Selection.Borders(xlDiagonalUp).LineStyle = xlNone With
.Selection.Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With With
.Selection.Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With With
.Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With With
.Selection.Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With
With
.Selection.Borders(xlInsideVertical)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With With
.Selection.Borders(xlInsideHorizontal)
.LineStyle = xlContinuous
.Weight = xlThin
.ColorIndex = xlAutomatic End With Set rngRange =
.ActiveSheet.UsedRange ' 列見出しをセンタリングする
rngRange.Offset(0, 0).Rows(1).Select With .Selection
.HorizontalAlignment = xlCenter End With ' 行見出しにセルの幅を合わせる
rngRange.Offset(0, 0).Columns(1).AutoFit ' 金額の部分を数値型にする Set rngData = _
rngRange.Offset(1, 1).Resize(rngRange.Rows.Count - 1, _
rngRange.Columns.Count - 1) rngData.Select .Selection.NumberFormatLocal = "#,##0"
‘
-----------------------------------------------------ここまで追加 ' Excelを可視状態にする .Visible = True |
Tip
|
表に罫線を引くには、Selection.Bordersプロパティを使用する他に、Selction.AutoFormatプロパティを使用する方法があります。AutoFormatプロパティを使用すると、表示形式、フォント、配置、罫線、パターン、幅と高さ等の書式を同時に設定することができます。
Sample3のBordersプロパティをAutoFormatプロパティに置換すると、わずか1行のステートメントを追加するだけで格子型の罫線を引くことができます。AutoFormatの引数Formatで、xlRangeAutoFormatLocalFormat3を指定していますが、これは図の表3のパターンを選択したことを意味します。 ' 罫線を引く Set rngRange =
.ActiveSheet.UsedRange rngRange.Select .Selection.AutoFormat Format:=xlRangeAutoFormatLocalFormat3
|
● ワークシートに印刷タイトル等のページ情報を設定するには
1 Accessを起動したら、作業フォルダに作成した CH6-1.mdbを開きます。
2 データベースウィンドウが表示されたら、モジュール
タブをクリックして新規作成ボタンをクリックします。
3 VBEが起動されてモジュールウィンドウが表示されたら、CH6-2.mdbのbasAutomation4からSample4をコピーして貼り付けます。
4 VBEの表示メニューからイミディエイトウィンドウを表示させて、Sample4を実行させます。Excel が起動されてSample3で作成した表に、印刷タイトル等ページ情報を設定してプレビュー印刷します。プレビュー印刷にタイトル“商品区分別売上”が表示されていることを確認したら、次ページのボタンをクリックして、列見出し/行見出しがページ毎に表示されるか確認します。印刷結果を確認したら、閉じるのボタンをクリックして、プレビュー印刷を閉じます。

図6-2-11 ワークシートに作成した表に、印刷タイトル等のページ情報を設定してプレビュー印刷した例
5 フォーカスをAccess に移動すると、”Hello Sample4”のメッセージが表示されていますので、OKボタンをクリックしてExcel を終了させます。
Function Sample4()の説明
Sample4では、Sample3で作成した表に、印刷タイトル等のページ情報を設定してプレビュー印刷します。尚、Sample4では、表に格子型の罫線を引くのにAutoFormatプロパティを使用するように変更しています。
ActiveSheetのPageSetupプロパティを使用して、行見出し(PrntTitleRows)と列見出し(PrintTitleColumns)のセルアドレスを設定します。
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = "$A:$A"
End With
更に、PageSetupプロパティを使用して、ページヘッダー(CenterHeader)に“商品区分別売上”、ページフッター(CenterFooter)にページ番号がセンタリングされて印字されるように設定します。ページヘッダー/フッターの印字位置は、左(Left)、中央(Center)、右(Right)の3種類の中から選択することができます。
.CenterHeader = "商品区分別売上"
.CenterFooter = "&P / &N"
End With
最後に、PageSetupプロパティの印刷方向(Orientation)に横(xlLandscape)、用紙サイズ(PaperSize)にA4(xlPaperA4)を設定したら、可視(Visible)プロパティをTrueに設定してから、PrintOutメソッドでプレビュー印刷します。
With
.ActiveSheet.PageSetup
.PaperSize = xlPaperA4
.Visible = True
.ActiveSheet.UsedRange.Select
.Selection.PrintOut Preview:=True, Collate:=True
PrintOutメソッドで、プレビュー印刷するときは、必ずExcelを可視状態に変更してから印刷します。Excelが非可視状態のとき、プレビュー印刷するとハングアップした状態になりますので注意してください。
リスト6-2-6 Sample4()のソースコード
|
Option Compare Database Option Explicit Function Sample4() ' ' ワークシートに印刷タイトルを設定するには ' Dim db As DAO.Database Dim rs As DAO.Recordset
Dim xlApp As Excel.Application Dim rngRange As Excel.Range Dim rngData As Excel.Range Dim rngData2 As Excel.Range Dim rngTotal As Excel.Range
Dim intRow As Integer Dim intCol As Integer Dim intFld As Integer
Set db = CurrentDb Set rs = db.OpenRecordset("qry商品区分別売上クロス集計") If rs.EOF Then Exit Function End If
Set xlApp = CreateObject("Excel.Application") If xlApp Is Nothing Then MsgBox "MS Excel 9.0 is not installed on your computer" Exit Function End If
DoCmd.Hourglass True
With xlApp .Workbooks.Add With rs ' Accessのフィールド名をExcelのカラムヘッダーとして使用する intRow = 1 intCol = 1 For intFld = 0 To .Fields.Count - 1 xlApp.Cells(intRow, intCol).Value = .Fields(intFld).Name intCol = intCol + 1 Next End With
' AccessのデータをExcelのA2を基点として取り込む .Range("A2").CopyFromRecordset rs
' rngDataにデータ部分の範囲を設定する Set rngRange = .ActiveSheet.UsedRange Set rngData = _ rngRange.Offset(1, 1).Resize( _ rngRange.Rows.Count - 1, _ rngRange.Columns.Count - 1)
' 受注年月別の合計を計算する Set rngTotal = _ rngData.Offset(rngData.Rows.Count).Rows(1) rngTotal.Formula = "=Sum(" _ & rngData.Columns(1).Address(False, False) _ & ")" rngTotal.Offset(0, -1).Columns(1) = "年月合計"
' 商品区分別の合計を計算する Set rngData2 = _ rngData.Offset(0, 0).Resize(rngData.Rows.Count + 1, _ rngData.Columns.Count) Set rngTotal = _ rngData2.Offset(0, rngData2.Columns.Count).Columns(1) rngTotal.Formula = "=Sum(" _ & rngData2.Rows(1).Address(False, False) _ & ")" rngTotal.Offset(-1, 0).Rows(1) = "区分合計"
' 罫線を引く(AutoFormat方式) Set rngRange = .ActiveSheet.UsedRange rngRange.Select .Selection.AutoFormat _ Format:=xlRangeAutoFormatLocalFormat3, _ Number:=False, _ Font:=False, Alignment:=False, _ Border:=True, _ Pattern:=False, _ Width:=False
' 列見出しをセンタリングする rngRange.Offset(0, 0).Rows(1).Select With .Selection .HorizontalAlignment = xlCenter End With
' 行見出しにセルの幅を合わせる rngRange.Offset(0, 0).Columns(1).AutoFit
' 金額の部分を数値型にする Set rngData = _ rngRange.Offset(1, 1).Resize( _ rngRange.Rows.Count - 1, _ rngRange.Columns.Count - 1) rngData.Select .Selection.NumberFormatLocal = "#,##0"
' ページのタイトルを設定する With .ActiveSheet.PageSetup .PrintTitleRows = "$1:$1" .PrintTitleColumns = "$A:$A" End With
' ページヘッダー/フッターを設定 With .ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "商品区分別売上" .RightHeader = "" .LeftFooter = "" .CenterFooter = "&P / &N" .RightFooter = "" End With
' 用紙サイズと印刷の向き(縦横)設定 With .ActiveSheet.PageSetup .Orientation = xlLandscape .PaperSize = xlPaperA4 End With
' Excelを可視状態にする .Visible = True
' プレビュー印刷 .ActiveSheet.UsedRange.Select .Selection.PrintOut Preview:=True, Collate:=True
MsgBox "Hello Sample4"
On Error Resume Next .ActiveWorkbook.Close False .Quit
End With
DoCmd.Hourglass False
rs.Close db.Close Set rs = Nothing Set db = Nothing Set xlApp = Nothing End Function |