• 検索結果がありません。

MS Office オートメーション

N/A
N/A
Protected

Academic year: 2021

シェア "MS Office オートメーション"

Copied!
6
0
0

読み込み中.... (全文を見る)

全文

(1)

■ MS Office オートメーション ■ ■ Excel マクロのキックに依る印刷

Access では、CSV や Excel 形式でのファイル保存が可能で有る。此れ利用して、Excel のマクロを装 備したシートに読み込んでマクロを実行し、印刷する方法を紹介する。 一般的には,単成るテキストファイルで有るCSV の方が、Excel 形式ファイルより汎用性が有るが、マ クロで自動実行した時には、¥が行頭に付いて居るセルを文字列型と仕て認識して仕舞うと謂う問題が 発生する為、此処では、Excel 形式で保存した物を読み込ませて居る。 此のファイルを読み込ませて印刷すると謂う手順では、一々コードを記述する必要は無い。下記の手順 でExcel に記録させて、後から適当に書き直す事が出来るので有る。 1.[ツール]メニューの[マクロ]-[新しいマクロの記録]を開く。 2.適当に設定してを押す。 3.マクロを選択し,[編集]ボタンをクリックする。 4.適切な操作をする。 5.操作を終了したらマクロ記録を終了する。 6.[ツール]メニューの[マクロ]-[マクロ]を開く。 7.マクロを選択し、[編集]ボタンをクリックする。 8.マクロ内のマクロ名、ディレクトリ名とファイル名等を適切に編集する。 ※ 因みに、Alt + F11 キーで Excel の VBA 環境を起動する事が出来る。

下記のサンプルは、Nwind.mdb に含まれる Orders テーブルを、其の儘、XLS 形式で吐き出した Orders.xls を表形式で印刷する物で有る。此れには可成り冗長なコードが含まれて居るが、此れが Excel が出す粗其の儘のコードで有る。実際には、適切に編集したり、コードを追加する事が望ましい。 猶、クエリーの範囲選択等は、飽く迄もAccess 側で操作す可き事で有り、此処では XLS の内容を、其 の儘、印刷すると謂う形に仕て置く可きで有る。其の方がメンテナンスもデバッグも容易で有る。 Sub PrintSheet() ChDir "F:¥DevStudio¥VB¥test¥VBACC" Workbooks.Open FileName:= _ "F:¥DevStudio¥VB¥test¥VBACC¥Orders.xls" Range("A:A,B:B,D:D,H:H").Select Range("H1").Activate Selection.Copy Sheets.Add ActiveSheet.Paste Selection.Columns.AutoFit Application.CutCopyMode = False Selection.Sort Key1:=Range("A2"), _ Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, _ Orientation:=xlTopToBottom, SortMethod _

(2)

Application.ScreenUpdating = False With ActiveSheet.PageSetup .PrintTitleRows = "" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = "" With ActiveSheet.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = "" .RightFooter = "" .LeftMargin = Application.InchesToPoints(0.78740157480315) .RightMargin = Application.InchesToPoints(0.78740157480315) .TopMargin = Application.InchesToPoints(0.984251968503937) .BottomMargin = Application.InchesToPoints(0.984251968503937) .HeaderMargin = Application.InchesToPoints(0.511811023622047) .FooterMargin = Application.InchesToPoints(0.511811023622047) .PrintHeadings = False .PrintGridlines = True .PrintComments = xlPrintNoComments .CenterHorizontally = False .CenterVertically = False .Orientation = xlPortrait .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = True .Zoom = 100 End With ActiveWindow.SelectedSheets.PrintPreview ' ActiveWindow.SelectedSheets.PrintOut _ ' Copies:=1, Collate:=True ActiveWorkbook.Close (False) End Sub

此のマクロは、autoprnt.xls と謂うファイルに保存した。Visual Basic から此のマクロを実行するには ファイルをMicrosoft Form に仕てインスタンシングをする GetObject(CreateObject ではない)を使 用して、Excel のオブジェクトを作成する。

猶、Excel97 からは作成されるオブジェクトが異なって居る。此れ以前のバージョンの Excel ではオブ ジェクトの型にSheet を指定した時には Worksheet オブジェクトが、Chart を指定した時には Chart オブジェクトで有ったが、孰れもExcel 97 では Workbook に変更された。

(3)

obj.Application.run "autoprnt.xls!PrintSheet"

猶 、 マ ク ロ を 実 行 す る に は 、Application オ ブ ジ ェ ク ト が 可 視 状 態 で な け れ ば 成 ら な い 為 、 Application.Visible プロパティを True に仕て置く必要が有る。

Private Sub cmdPrSheet_Click() Dim obj As Object

Set obj = GetObject _

("F:¥devstudio¥vb¥test¥vbacc¥autoprnt.xls") obj.Application.Visible = True obj.Application.run "autoprnt.xls!PrintSheet" obj.Application.Visible = False End Sub 同様に仕て、チャートをプレビューするマクロ、及び、其れをキックするVisual Basic 側のコードを示

す。此処では、Nwind.mdb 内に有るクエリー「Category Sales for 1995」を Cat95.Xls と謂うファイ ルにコンバートして使用して居る。

Sub PrintChart() ' Add

Dim Cels As Object

ChDir "F:¥DevStudio¥VB¥test¥VBACC" Workbooks.Open FileName:= _

"F:¥DevStudio¥VB¥test¥VBACC¥Cat95.xls" Set Cels = ActiveCell.CurrentRegion

Charts.Add ActiveChart.ChartType = xlColumnClustered ' ActiveChart.SetSourceData Source:=Sheets _ ' ("CatSales").Range("A1:B9"), PlotBy _ ' :=xlColumns ' Add

ActiveChart.SetSourceData Source:=Cels, PlotBy _ :=xlColumns

ActiveChart.Location Where:=xlLocationAsNewSheet With ActiveChart

.HasTitle = True

.ChartTitle.Characters.Text = "CategorySales" .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With With ActiveChart.PageSetup .LeftHeader = "" .CenterHeader = "" .RightHeader = "" .LeftFooter = "" .CenterFooter = ""

(4)

.LeftMargin = Application.InchesToPoints(0.78740157480315) .RightMargin = Application.InchesToPoints(0.78740157480315) .TopMargin = Application.InchesToPoints(0.984251968503937) .BottomMargin = Application.InchesToPoints(0.984251968503937) .HeaderMargin = Application.InchesToPoints(0.511811023622047) .FooterMargin = Application.InchesToPoints(0.511811023622047) .ChartSize = xlFullPage .CenterHorizontally = False .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .BlackAndWhite = True .Zoom = 100 End With ' ActiveWindow.SelectedSheets.PrintOut _ ' Copies:=1, Collate:=True ActiveWindow.SelectedSheets.PrintPreview ActiveWorkbook.Close (False) End Sub

Private Sub cmdPrChart_Click() Dim obj As Object

Set obj = GetObject _

("F:¥devstudio¥vb¥test¥vbacc¥autoprnt.xls") obj.Application.Visible = True

obj.Application.run "autoprnt.xls!PrintChart" obj.Application.Visible = False

End Sub

此の様に仕て、Visual Basic からボタンひとつで Excel の表やチャート等の豊富な機能を使用した印刷 が出来る様に成る。

(5)

マクロを呼び出すアプリケーション

Excel 表形式での印刷プレビュー

Excel チャート形式での 印刷プレビュー

(6)

■ Word の差し込み印刷 Word への差し込み印刷を紹介して置く。此れは全く難しい事は無い。 [ツール]-[差し込み印刷ヘルパ ー]メニューを選べば、誰でも使う事が出来る。但し、此処では Access 等のクエリーでなくても、XLS やCSV も指定する事が出来る。従って、Excel の時と同じ様な手順で実行する事が出来る筈で有る。 下図は、セミナー受講票の印刷プログラムの例で有る。Web から申し込まれたセミナー情報は、SQL Server に入って居る。此れとローカルに有る Access のセミナー会場等の MDB 等と組み合わせたクエ リーを実行し、Word で書いた文書の適当な部分に其等のデータを差し込んで居るので有る。 猶、左側にドロップダウンして居るのは、差し込み可能なフィールド一覧で有る。 Word での差し込み印刷の例

参照

関連したドキュメント

海外旅行事業につきましては、各国に発出していた感染症危険情報レベルの引き下げが行われ、日本における

2021年8月 改訂..

Lane and Bands Table と同様に、Volume Table と Lane Statistics Table も Excel 形式や CSV

限られた空間の中に日本人の自然観を凝縮したこの庭では、池を回遊する園路の随所で自然 の造形美に出会

編﹁新しき命﹂の最後の一節である︒この作品は弥生子が次男︵茂吉

[r]

サンプル 入力列 A、B、C、D のいずれかに指定した値「東京」が含まれている場合、「含む判定」フラグに True を

 そして,我が国の通説は,租税回避を上記 のとおり定義した上で,租税回避がなされた