23
Excel プログラム開発の練習マニュアルー2 ( マクロの学習-2 ) 作成 2015.03.20 修正 2015.04.19 本マニュアルでは、Excel でのプログラム開発を行なうに当たっ て、 Excel の高度なマクロに関する学習 について記述します。

Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Excel プログラム開発の練習マニュアルー2

( マクロの学習-2 )

作成 2015.03.20

修正 2015.04.19

本マニュアルでは、Excel でのプログラム開発を行なうに当たっ

て、

Excel の高度なマクロに関する学習

について記述します。

Page 2: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 1/22

Ⅰ.Excel のマクロに関する学習-2

1.初めに

Excel は単なる表計算のソフトと思っている方も多いと思います。

しかし、Excel には、一般的に使用する Excel 関数の他に、Excel Basic と呼

ばれる VBA( Visual Basic for Application ) を利用する事も出来ます。

Excel で VBA を使って開発を行うと、極めて強力な業務用ソフトを開発する事

が出来て、業務効率化に大変に有用なのです。

Excel で利用出来る関数の使い方の練習については、「プログラム開発初級」

の「エクセル関数の学習」を見て下さい。

Excel Basic を使った開発の練習について、本マニュアルでは、「簡単な Excel

のマクロ(Excel のマクロに関する学習ー1)」を学習された事を前提に

「高度な Excel のマクロ」に関して記述します。

2.事前準備&説明

①.MS Office の準備

通常は、パソコンに MS Office が予めインストールされているので、その中の

Excel を使用します。

インストールされていない場合は、MS Office の Standard 版を購入して下さ

い。

②.Excel マクロの学習

Excel マクロは、VBA とも呼ばれる BASIC 言語を使用します。

Excel マクロ(VBA)では、VB 単独での開発に比べて、Excel 独特の機能であ

る「罫線の描画に関する機能」が数多く含まれています。

これらの機能を使いこなせれば、ビジネス上のアプリケーションとして、充分

に通用するソフトウェアの開発が出来ます。

Page 3: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 2/22

3.Excel のマクロに関する学習-2

①.マクロの自動記録と Table 定義書の項目値の取得・新規ワークシートへの書

ここでは、「マクロの自動記録」を使いながら、以下の3つの事を行ないます。

a.Table 定義書の項目値の取得(行毎の値のコピー)

b.新規の Excel の WorkSheet を作成し、第1行の各列に Table 定義書の項

目名を書込。

c.上記の a で取得した「Table 定義書の項目値」を「新規の Excel の

WorkSheet」の2行目以下に書込

前述した様に、Excel マクロ(VBA)では、Excel 独特の機能である「罫線の描

画に関する機能」が数多く含まれていますが、これらの機能を、コマンド単独

で学習して、それらの機能を組み合わせて Excel マクロ(VBA)の Sub プログ

ラムにするのは、非常に大変です。

( 「罫線の描画に関する機能」は、②に記述します。 )

そこで、例えば、「Excel の表の複数のカラムの値をピックアップする Sub プ

ログラム」を開発する場合は、まず、手動でその動きを行い、この動きを「マク

ロの自動記録」機能で記録します。

その後、記録した「Excel のマクロ」を見ながら、行ないたい機能をプログラミ

ングしていきます。

Excel のマクロに関する学習-2の資料の Table 定義書は、社員管理システ

ム用の Table 定義書の例です。

この Table 定義書で、「Table 番号」、「Table 名」、「TableID」と「各項目毎の

定義(項目名~最終内容変更日)」を自動で取得し、新規に作成したワーク

シートにコピーするマクロを作成する練習を行ないます。

この練習は、「プログラム開発初級」の「アクセスでのプログラム開発」の

「Table 定義書自動チェック Prog.の学習」の内容の一部になります。

Page 4: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 3/22

a.マクロの自動記録-1( Table 定義書の項目値の取得 )

まず始めに、「ツールバー」の「マクロ」の「新しいマクロの記録」をピックし

ます。

「OK」ボタンを押すと、マクロの自動記録が始まります。

Excel の Table 定義書で、4行目から8行目迄を行コピーします。

「ツールバー」の「マクロ」の「記録の終了」をピックすると、マクロの自動記

録が終了します。

Page 5: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 4/22

自動記録したマクロの内容を見る為に、「ツールバー」の「マクロ」の

「マクロ」をピックします。

マクロ名のウィンドウが現れるので、今記録した「Macro1」の「編集」

を選択します。

Page 6: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 5/22

これで、今、自動記録したマクロの内容を見る事が出来ます。編集も可

能です。

このマクロの内容を以下に示します。

Sub Macro1()

'

' Macro1 Macro

' マクロ記録日 : 2015/4/15 ユーザー名 : XXXX

'

Rows("4:4").Select

Selection.Copy

Rows("5:5").Select

Application.CutCopyMode = False

Selection.Copy

Rows("6:6").Select

Application.CutCopyMode = False

Selection.Copy

Page 7: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 6/22

Rows("7:7").Select

Application.CutCopyMode = False

Selection.Copy

Rows("8:8").Select

Application.CutCopyMode = False

Selection.Copy

End Sub

上記のマクロの簡単な説明をします。

Rows("4:4").Select

行 4 を選択します。

Selection.Copy

選択した範囲をコピーします。

Rows("5:5").Select

行5を選択します。

Application.CutCopyMode = False

コピーモードにします。

Selection.Copy

選択した範囲をコピーします。

以下、6,7,8行(Rows("6:6")、Rows("7:7")、Rows("8:8"))は上記と同

じ処理です。

Page 8: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 7/22

b.マクロの自動記録-2

( 新規の Excel の WorkSheet を作成し、第1行の各列に Table 定義書の項目

名を書込。 )

まず始めに、「ツールバー」の「マクロ」の「新しいマクロの記録」をピックし

ます。

「OK」ボタンを押すと、マクロの自動記録が始まります。

Excel の Table 定義書の項目名(1行目の値)をコピーし、新規のワークシー

トを作成し、1行目にコピーした項目名(1行目の値)をペースト(書き込み)し

ます。

「ツールバー」の「マクロ」の「記録の終了」をピックすると、マクロの自動記

録が終了します。

自動記録したマクロの内容を見る為に、「ツールバー」の「マクロ」の

「マクロ」をピックします。

マクロ名のウィンドウが現れるので、今記録した「Macro2」の「編集」

を選択します。

Page 9: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 8/22

これで、今、自動記録したマクロ(Macro2)の内容を見る事が出来ま

す。編集も可能です。

このマクロの内容を以下に示します。

Sub Macro2()

'

' Macro2 Macro

' マクロ記録日 : 2015/4/18 ユーザー名 : YYYYYY

'

Rows("3:3").Select

Selection.Copy

Sheets.Add

ActiveSheet.Paste

Range("C7").Select

Application.CutCopyMode = False

End Sub

以下、上記のマクロの簡単な説明をします。

Rows("3:3").Select

行3を選択します。

Selection.Copy

選択した範囲をコピーします。

Sheets.Add

新規のワークシートを作成します。

ActiveSheet.Paste

Active なシート(今開いているワークシート:新規に作成したワーク

シート)に、先に選択した範囲をペーストします。

Page 10: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 9/22

Range("C7").Select

特に意味はありません。マクロの自動記録を終わらせる為に、仮に

ポインターを置いた場所(セル)です。

Application.CutCopyMode = False

マクロの自動記録を終了させます。

c.マクロの自動記録-3

( 上記の a で取得した「Table 定義書の項目値」を「新規の Excel の

WorkSheet」の2行目以下に書込 )

まず始めに、「ツールバー」の「マクロ」の「新しいマクロの記録」をピックし

ます。

「OK」ボタンを押して、「Macro3」の自動記録を開始します。

次に、Excel の Table 定義書の項目名(4行目の値)をコピーし、新規のワー

クシートを作成し、2行目にコピーした項目名(4行目の値)をペースト(書き込

み)します。

Page 11: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 10/22

「ツールバー」の「マクロ」の「記録の終了」をピックすると、マクロの自動記

録が終了します。

Page 12: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 11/22

自動記録したマクロの内容を見る為に、「ツールバー」の「マクロ」の

「マクロ」をピックします。

マクロ名のウィンドウが現れるので、今記録した「Macro3」の「編集」

を選択します。

Page 13: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 12/22

これで、今、自動記録したマクロ(Macro3)の内容を見る事が出来ま

す。編集も可能です。

このマクロの内容を以下に示します。

Sub Macro3()

'

' Macro3 Macro

' マクロ記録日 : 2015/4/19 ユーザー名 : XXXXXX

'

Rows("4:4").Select

Selection.Copy

Sheets("Sheet1").Select

Rows("2:2").Select

ActiveSheet.Paste

Sheets("X05_01(社員情報)").Select

Rows("5:5").Select

Application.CutCopyMode = False

Page 14: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 13/22

Selection.Copy

Sheets("Sheet1").Select

Rows("3:3").Select

ActiveSheet.Paste

Sheets("X05_01(社員情報)").Select

Rows("6:6").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Sheet1").Select

Rows("4:4").Select

ActiveSheet.Paste

Sheets("X05_01(社員情報)").Select

Rows("7:7").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Sheet1").Select

Rows("5:5").Select

ActiveSheet.Paste

Sheets("X05_01(社員情報)").Select

Rows("8:8").Select

Application.CutCopyMode = False

Selection.Copy

Sheets("Sheet1").Select

Rows("6:6").Select

ActiveSheet.Paste

End Sub

Page 15: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 14/22

以下、前記のマクロの簡単な説明をします。

Rows("4:4").Select

行 4 を選択します。

Selection.Copy

選択した範囲をコピーします。

Sheets("Sheet1").Select

Sheet1(新規に作成したワークシート)を選択します。

Rows("2:2").Select

行2を選択します。

ActiveSheet.Paste

コピーした範囲を選択した範囲にペーストします。

Sheets("X05_01(社員情報)").Select

「X05_01(社員情報)のシート(Table 定義書のシート)」を選択しま

す。

Rows("5:5").Select

行5を選択します。

Application.CutCopyMode = False

Selection.Copy

選択した範囲をコピーします。

Sheets("Sheet1").Select

Sheet1(新規に作成したワークシート)を選択します。

Rows("3:3").Select

行3を選択します。

ActiveSheet.Paste

コピーした範囲を選択した範囲にペーストします。

以下、「X05_01(社員情報)のシート(Table 定義書のシート)」の8行目

迄を Sheet1(新規に作成したワークシート)の6行目までにペーストして

いきます。

Page 16: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 15/22

その結果、Sheet1(新規に作成したワークシート)は、以下の様になり

ます。

これで、Sheet1(新規に作成したワークシート)への書き込みの練習は

終了です。

次の②の練習の為に、「X05_01(社員情報)のシート(Table 定義書のシ

ート)」の8行目以下の全ての行を Sheet1(新規に作成したワークシート)

に書き込み(コピー)をしておきます。

Page 17: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 16/22

②.マクロの自動記録とデータ書込をした新規ワークシートへの罫線追加

ここでは、「マクロの自動記録」を使いながら、以下の3つの事を行ないます。

a.新規ワークシートのデータの有る全ての範囲(セル)への罫線(細線)を

追加

b.新規ワークシートのデータの有る範囲の外側に罫線(太線)を追加

この練習は、「プログラム開発初級」の「アクセスでのプログラム開発」の

「Table 定義書自動チェック Prog.の学習」の内容の一部になります。

a.新規ワークシートのデータの有る全ての範囲(セル)への罫線(細線)を追加

Sheet1(新規に作成したワークシート)には、データをコピーした時に罫線

も一緒にコピーされていますので、「罫線(細線)の追加」機能の学習の為、

予め罫線を消しておきます。(下記、Excel シート参照)

今迄の練習と同様に、マクロの自動記録「Macro4」を開始し、Sheet1

(新規に作成したワークシート)の全てのセルに罫線(細線)を付けます。

( 次頁の Excel のシートを参照 )

Page 18: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 17/22

以下、今、自動記録したマクロ(Macro4)の内容を示します。

Sub Macro4()

'

' Macro4 Macro

' マクロ記録日 : 2015/4/19 ユーザー名 : YYYYYY

'

Range("A1:H22").Select

ActiveWindow.ScrollColumn = 10

Range("A1:Q22").Select

ActiveWindow.ScrollColumn = 1

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlThin

Page 19: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 18/22

.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

Page 20: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 19/22

Range("B25").Select

End Sub

以下、前記のマクロの簡単な説明をします。

Range("A1:H22").Select

セル(A,1)からセル(H,22)迄を選択します。

( 画面の制約上、セル(A,1)からセル(Q,22)迄を一度に選択が出来

ません )

ActiveWindow.ScrollColumn = 10

10カラムスクロールさせます。

Range("A1:Q22").Select

セル(A,1)からセル(Q,22)迄を選択します。

ActiveWindow.ScrollColumn = 1

.ColorIndex = xlAutomatic

End With

選択したセル(A,1)からセル(Q,22)の範囲全てのセルに罫線(細

線)を付加します。

Page 21: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 20/22

なお、以下の構文は、自動記録を終了させる為に、セルをピックしただけ

で、特に意味は有りません。

Range("B25").Select

End Sub

b.新規ワークシートのデータの有る範囲の外側に罫線(太線)を追加

今迄の練習と同様に、マクロの自動記録「Macro4」を開始し、Sheet1(新規

に作成したワークシート)の外枠に罫線(太線)を付けます。

以下、今、自動記録したマクロ(Macro5)の内容を示します。

Sub Macro5()

'

' Macro5 Macro

' マクロ記録日 : 2015/4/19 ユーザー名 : XXXXXX

'

Range("A1:O22").Select

ActiveWindow.SmallScroll ToRight:=5

Range("A1:Q22").Select

Page 22: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 21/22

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlMedium

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Page 23: Excelプログラム開発の練習マニュアルー2 ( マクロの学習-2home.m07.itscom.net/tairyu/Manual2/manual2-excel-2.pdf · Excelの高度なマクロに関する学習

Copyrigth by Asao‐koubou 22/22

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

Range("D24").Select

End Sub

以下、前記のマクロの簡単な説明をします。

Range("A1:O22").Select

ActiveWindow.SmallScroll ToRight:=5

Range("A1:Q22").Select

セル(A,1)からセル(H,22)迄を選択し、5カラムスクロールさせて、

セル(A,1)からセル(Q,22)迄を選択します。

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

.ColorIndex = xlAutomatic

End With

選択したセル(A,1)からセル(H,22)の外枠に罫線(太線)を付けます。

なお、以下の構文は、前記同様に、自動記録を終了させる為に、セルを

ピックしただけで、特に意味は有りません。

Range("D24").Select

End Sub

(注1):Excel 及び VB は、マイクロソフト社の製品です。

(注2):Excel の VBA の個々のコマンドに関しては、Excel のヘルプを見るか、

VB の解説書を見て下さい。