データ型と変数の型の宣言

皆さんこんにちはALEXです。今回はデータと、変数の方の宣言についてご説明します

値を扱う場合にデータ型と言うものがあります。数値と文字列が代表的なものです。数字の「0」などは、数値として扱う場合も、文字列として扱う場合もありますね。

データ型

VBAで取り扱うデータ型は以下のものが挙げられます

データ型

表記

範囲

文字列型

String

文字列

整数型

Integer

-32,768~32,767の整数

長整数型

Long

-2,147,483,648~2,147,483,647の整数

単精度浮動小数点型

Single

-3.402823E38~-1.401298E-45
1.401298E-45~3.402823E38

倍精度浮動小数点型

Double

-1.79769313486231E308~-4.94065645841247E-324
4.94065645841247E-324~1.79769313486232E308

通貨型

Currency

-922,337,203,685,477.5808~922,337,203,685,477.5807

日付型

Date

西暦100年1月1日~西暦9999年12月31日

ブール型

Boolean

True または False

バイト型

Byte

0~255の正の整数

オブジェクト型

Object

オブジェクト参照するデータ型

バリアント型

String

あらゆる種類の値を保存できる型

ユーザー定義型

String

ユーザー定義の型

データ型には色々な種類がありますが、文字列、数値、日付、ブール、オブジェクト、の5種類が代表的です。また、数値は整数の他に浮動小数点型、倍精度浮動小数点があります。通貨型は大きい数値を精度よくなく計算するために使います。

 

変数の宣言と型の指定

変数は宣言して型を指定することができます。以下の構文を用います。

 

Dim 変数名 as データ型

 

変数名の後に「as」を付け、その後にデータ型を指定します。例えば次のようになります。

例えば次のようになります。

 

変数に指定した型と異なるデータ型の値を格納しようとするとエラーとなります。

 

上記のマクロを実行しようとすると次のようなエラーが表示されます。

数にデータ型を指定することと、プログラマの意図しない使い方をユーザーがしないようする事が出来ます。変数には型を指定するようにしましょう。

 

型を指定していない場合は、どのような型の値でも格納する事が出来ます。この場合、値が格納された時にその格納された値の型が変数の型となります。

変数に型を指定していないと、想定と違った値を格納してしまうようなミスが起こりやすくなります。例えば文字を格納する予定の変数を宣言したのに、間違えて数値を格納しても、値を格納した時点ではエラーにならないからです。

 

まとめ

変数の宣言と型の指定についてご説明しました。

 

プロパティ・メソッド

みなさんこんにちはALEXです。VBA基礎講座として基礎知識をご説明いたします。前回記事でオブジェクトについてご説明いたしました。オブジェクトとして、ワークブック、ワークシート、セルなどがあります。VBAはこれらを操作するものですが、その操作はプロパティ、メソッドというものを使って行います。それでは、そのプロパティ、メソッドについてご説明いたします。

 

プロパティ

オブジェクトが持つ数値や文字などの情報を取得するために、オブジェクトのプロパティを使っておないます。セルというオブジェクト見てみましょう。セルに入力されている値や罫線など対象のセルの状態を表す情報をプロパティとして持っています。

VBAでプロパティを記述するときは、下のような構文を使います。

 

オブジェクト.プロパティ名

 

オブジェクトごとに対応するプロパティは、それぞれオブジェクトによって決まっています。例を見てみましょう。セルに入力されいる値を表すプロパティは「value」です。セル(“A1”)に含まれている値は下記のVBAコードで制御することが可能です。ようにして変更する事が出来ます。

 

セル(“A1”)を表すRangeをオブジェクトとして宣言し、そのオブジェクトのもつプロパティ「Value」に“ABC”という値を設定しています。その結果、シートのA1セルに“ABC”が出力されます。

メソッド

メソッドとは、オブジェクトに動作を指定するものです。例えば、セルを選択したり、クリアしたりする等の動作です。

メソッドを使用するときは、下のような構文を使います。

オブジェクト.メソッド名

セルA:1をクリアする場合には次のように記述します。

 

まとめ

プロパティ、メソッドについてご説明しました。

オブジェクト

オブジェクトとは

 

デみなさんこんにちはALEXです。今回はオブジェクトについてご説明いたします。データ型の1つにオブジェクト型というものがあります。オブジェクトは、エクセルのブックやシート、セルなどをVBAでなんらかの操作をする対象です。

エクセルにおける主要なオブジェクト4つあります。

要素

オブジェクト

アプリケーション

Application

ブック

Workbook

ワークシート

Worksheet

セル

Range

 

一つのブックオブジェクトにワークシートオブジェクトが複数ある場合がありますね。こういったオブジェクトの集合体をコレクションと呼んでいます。コレクション自身ももちろんオブジェクトです。

また例えばワークシートであれば、1つのブックオブジェクトの中に複数のワークシートオブジェクトが含まれています。このような同じオブジェクトの集まりのことをコレクションと言います。(コレクション自体もオブジェクトの1つです)。

コレクションには以下のようなものがあります。

要素

オブジェクト

説明

ブック

Workbooks

開いている全てのブック

ワークシート

Worksheets

ブックに含まれる全てのワークシート

コレクションは、あるブックに含まれているワークシートすべてを管理しており、ワークシートコレクションを構成しているワークシートオブジェクトを1つずつ取り出すということが可能です。

 

コレクションは階層構造になっています。

Application

  |

Workbooks

  |

Worksheets

  |

Cells

オブジェクトの最上位はApplicationオブジェクトです。階層を降りていくと、Workbooksオブジェクト、そしてWorksheetsオブジェクトです。があり、順にブック、シート、セル、と階層が下がっていくことになります。

なぜこのようになっているかというとVBAではオブジェクトに対して色々な操作を行うように設計されているからです。セルに文字を入力するという操作の対象もなるものがオブジェクトです。たとえばA1のセルの値をABCにする、という場合「Cells(“A1”).Value = “ABC”」という記述をします。VBAはオブジェクトを操作するために作られたプログラミング言語です。

 

まとめ

今回はオブジェクトについてご紹介いたしました。

Subプロシージャ

みなさんこんにちはALEXです。前回の記事でマクロを作成して実行しましたが、ここで作成したプログラムはプロシージャと呼ばれ、実行する単位ごとに記述します。ここでは、プロシージャをご説明します。

プロシージャの構文は下記ととおりです。

 

プロシージャは「Sub」で始まり「End Sub」で終わります。この間に実際のプログラムを記述していきます。プロシージャことに保存するため「Subの」後ろにプロシージャ名を記述します。ですので、前回の記事のプログラムのプロシージャはMacro1です。

プロシージャ名にはアルファベット、ひらがな、漢字などが使えます。数字も使えますが、プロシージャ名の先頭は必ず文字を使います。アンダーバー以外の記号やスペースなどは使えません。

正しいプロシージャ名:

 

誤ったプロシージャ名:

 

 

プロシージャの記述場所

プロシージャはコードウィンドウ内に記述します。

 

プロシージャの呼び出し

記述したプロシージャをマクロとして実行する事ができます。

開発―マクロ 実行したいプロシージャを選択し、実行

「test」プロシージャが呼び出され、「test」プロシージャ内に記述されたプログラムが実行されます。

まとめ

今回はVBAのプログラムの単位であるプロシージャについてご説明いたしました。

 

 

エクセルマクロVBA作成に困ったら

VBAのコードがわからず検索してもなかなかいいコードが見つからない、そんんなお悩みはございませんか?開発委託・コンサルティング・ワンポイントサポートいたします。お気軽にどうぞ。

 

 

マクロを記録して実行

 

こんにちはALEXです。前回はマクロを使えるための準備をご紹介しましたが、今回はマクロの記録方法と実行方法をご紹介します。

マクロはVBAで記述してマクロとしたものを実行するのが中上級レベルでは一般的ですが、最初はマクロを記録して作成し、それを実行する方法の方が直感的に理解しやすいです。

マクロの実行とは「マクロを記録」することで記録時に操作と同じ内容を実行することができます。この記録と実行はRPAでも一般的に採用されています。

 

マクロの記録

では早速マクロを記録してみましょう。前の記事でご説明したように、マクロが有効化されている、拡張子が.xlsmのファイルを開けてください。

 

A1セルにHello World!と打ち込んでください。このセルをB1セルにコピーしてペーストするマクロを記録しましょう。

開発タブーマクロの記録をクリック

マクロの記録というウィンドウが開きます。

OKをクリック。ここからマウスの操作が記録されます。

A1セルを選択

コピー(ctrl-C)

C1セルを選択

ペースト(ctrl-V)

青■の記録終了をクリック

これでこの操作がマクロに記録されました。

 

次に記録したマクロを実行してみましょう。C1のセルはクリアしてください。

「開発」→「マクロ」「Macro1」を選択し、「実行

C1セルにHello World!が記載されました。

 

マクロの記録」で行った操作と、全く同じ操作が実行されました。。

 

 

では、今記録した、マクロの内容を見てみましょう。

「開発」→「マクロ」「Macro1」を選択し、「編集」をクリック。

マクロの内容

 

「Visual Basic Editor」が起動され、Macro1のコードが表示されました。

 

 

1行目 マクロ開始行

5行目 A1セルを選択

6行目 選択箇所をコピー

7行目 A3セルを選択

8行目 選択箇所をペースト

9行目 マクロ終了行

 

という記述がなされています。マクロの記録という作業は、あなたが行ったマウスやキーボードの操作をVBAで記載するということなのです。

 

今後、VBAを理解していくと実際に開発するマクロはこの記録する機能はあまり使わないかもしれません。その代わり、VBAで書きたいコードを調べる手段として、その動作を記録し、コードを解析する、という方法がとても便利な方法として活用することができます。

 

まとめ

マクロを記録し、再生する方法をご紹介しました。

 

エクセルマクロVBA作成に困ったら

VBAのコードがわからず検索してもなかなかいいコードが見つからない、そんんなお悩みはございませんか?開発委託・コンサルティング・ワンポイントサポートいたします。お気軽にどうぞ。

 

ExcelとAccessを連携しよう(1)

みなさん、こんにちはKITAです。社内のデータベースにAccessを使っていらっしゃる方は多いと思います。ですが、アクセスにはエクセルのような計算機能がないので、エクセルでデータ処理してからアクセスにデータを入力している方は多いのではないでしょうか?エクセルのセルをコピーして、アクセスのフォームにペースト、というなかなかハードな作業をこなしていらっしゃるかたもいらっしゃいます。そこで、業務の自動化にもつながる、エクセルとアクセスの連携方法をご紹介いたします。これができるようになると、エクセルでデータの集計処理、そしてエクセルからアクセスに直接データを入力することができます。

ADOを使おう!

今回はADO(ActiveX Data object)を使います。Accessだけでなく、Oracle、MySQLなどの様々なデータベースに対して共通の手法で操作が出来る仕組みです。ExcelからADOを使用するためには、まず参照設定を行います。


事前準備としてVBEの「ツール」メニュー → 「参照設定」をクリックし、「参照設定」ダイアログボックスを表示し、「Microsoft ActiveX Data Objects X.X Library」にチェックを入れます(X.Xはバージョン)。

 

Excel上でAccessデータベースに接続してレコードを読み込む。

ExcelからAccessデータベースに接続して、レコードを読み込み、表示しましょう。

まず、Access上にテーブルを作成します。ID,品名、型番、単価のシンプルなレコードを作成します。テーブル名はt_itemとします。テーブルデザインや入力内容は以下の通りです。

 

アクセスのテーブル

次に、ExcelからAccessのテーブルをADOで読み込む為の設定を行います。Excelを起動し、VBE(Visual Basic Editor)を[Alt]+[F11]で起動し、ツール(T) → 参照設定(R) をクリック。

参照設定のウィンドウが開いたらMicrosoft ActiveX Data Objects 2.X Libraryにチェックを入れます。

 

最後に、テーブルをADOで読み込む為のVBAコードを作成します。

 

 

VBAソースの説明

1.変数の設定

3-8行目でADOで使用する変数を宣言します。

  1. Excelブックと同じフォルダ内のAccessのtest.accdbのフルパスを取得する。
    11行目でActiveWorkbook.Pathを使いExcelのフォルダを取得します。

 

2.データベース接続

14~16行目でAccessデータベースに接続します。
今回使用するアクセスのバージョンは2007以降なので、providerにはMicrosoft.ACE.OLEDB.12.0を指定して下さい。

 

 

3.SQLを実行

19行目でDBに接続するSQLを実行します。アクセスのテーブル名を記述します。

 

4.レコードセットを開く
22行目のOpenメソッドでレコードセットを開きます。

 

5.アクティブシート名を取得

25行目で現在アクティブになっているワークシート名を取得します。

 

6.スタート行をセット

28行目でエクセルシートに書き込みをはじめ行数をセットします。

 

7.テーブル内のデータを全てExcelに出力
31~41行目でDo Until Loopを使い、レコードをExcelに繰り返して出力します。

 

8.データベースをクローズ
44-47行でCloseメソッドを使いレコードセットとADOコネクションオブジェクトを閉じます。それぞれの変数にNothingをセットしてクリアします。

 

 

マクロの実行

Access_read()マクロを実行しましょう。

エクセルにアクセスのデータが転記されました。

 

エクセル&アクセステンプレート差し上げます。

今回作成したエクセルとアクセスのサンプルを無料で差し上げます。

お問い合わせから、コメント欄に「ExcelとAccessを連携してみよう(1)テンプレ希望」と記入して送信ください。

 

まとめ

以上、今回はExcelからAccessにADOを使って接続する方法でした。次回は、エクセルからアクセスに書き込む方法をご紹介します。

 

エクセルマクロVBA作成に困ったら

VBAのコードがわからず検索してもなかなかいいコードが見つからない、そんんなお悩みはございませんか?開発委託・コンサルティング・ワンポイントサポートいたします。お気軽にどうぞ。

Power Automate Desktopで Excel マクロを実行する

みなさんこんにちは、ALEXです。今回はPower Automate desktop 上でExcel マクロを実行する方法についてご紹介します。

Power Automate Desktopではエクセルの操作がほぼカバーされています。エクセル上級者の方に必須のマクロ動作もカバーされておりとても便利です。ここでは、Power Automate Desktopでのマクロ操作をご説明します。

使い方

Power Automate Desktop画面で、「アクション」の「Excel」アクションから「Excelの起動」をドラッグします。

全般で、Excelの起動は「次のドキュメントを開く」を選び、マクロが保存されているExcelファイルを選びます。詳細で、「アドインとマクロの読み込み」を有効にします。最後に「保存」をクリック。

 

「アクション」の「Excel」、「詳細」から「Excel マクロの実行」をドラッグします。

 

 

パラメータの設定画面で値を指定します。

Excelインスタンスは「Excelの起動」で生成された変数が自動的に入力されます。実行したいマクロ名を「マクロ」に記入します。「保存」をクリック

 

 

今回作成したマクロMacro1はA1セルに文字を書き込むシンプルなマクロです。

Sub Macro1()

    Cells(1,1)=”Hello World!”

End Sub

 

必要あれば「エラー発生時」をクリックしてエラー処理を行います。

 

実行

 

画面の実行ボタンを押して実行します。

 

 

 

エクセルが立ち上がりマクロが実行されました。

 

 

まとめ

Power Automate Desktopからエクセルを立ち上げマクロを実行する方法を紹介いたしました。

 

エクセルVBAーPower Automate Desktop連携でお悩みの方がいらっしゃいましたら、

当社のVBA開発サービスをご検討ください。

 

マクロを使えるようにしよう

お使いのエクセルではそのままでは、マクロを使えることができません。準備作業が二つあります。開発タブの追加とファイル拡張子の変更です。この二つの作業方法をご説明いたします。

 

開発タブの追加

上部のリボンに、「開発」タブを追加します、

 

「開発」タブには、マクロを開発するにあたって必要なアイコンが並んでいます。画像は、Office365のものです。

※画像は、Office365になります。

 

各バージョン毎にマクロVBAを使う為の準備操作が違います。ここではEXCEL2010以降を使った場合のご説明を行います。

 

リボンの「ファイル」をクリック。

左メニューの「オプション」をクリック。

左メニューの「リボンのユーザー設定」をクリックして右側にある、「開発」にチェックしで、「OK」で完了です。リボンに「開発」が追加されます。

 

 

拡張子の変更

EXCELでマクロを利用する際、ファイルの拡張子を「*.xlsm」にする必要があります。

 

EXCELには様々な拡張子がありますが、

通常「*.xls」や「*.xlsx」となり、「*.xlsm」とにているので注意しましょう。

拡張子「*.xlsm」への保存方法

EXCELファイルを保存する際、

「名前を付けて保存」から拡張子の選択で

「Excel マクロ有効ブック(*.xlsm)」を選択し保存すれば良いです。

 

<手順>

①「ファイル」タブを選択

②「名前を付けて保存」を選択

③ ファイルの種類で.xlsm を選択

 

これで完了です。

 

マクロを使う準備が整いました。

エクセルのマクロ・VBAを使ってみよう

みなさんこんにちはKITAです。このブログシリーズではエクセルのマクロ、VBAを使おうとしている方への基礎知識を提供しています。

この記事では、実際にマクロを作って、動かしてみるところまで解説します。

 

エクセルのマクロって何?

「マクロ」とは、エクセルの操作を自動化する機能です。

マクロは、プログラムで出来ています。そして、そのプログラムを記述するプログラミング言語がVBA(Visual Basic for Applications)です。

そのほかの特徴として

・Excelの全機能を操作出来る。
・操作を記録出来る。
・Windowsの設定も出来る。

・Pythonとの連携も出来る。

 

エクセルのマクロ機能のひとつに「マクロの記録」という機能があります。

これは、手動で行った操作を記録できるものです。さらに、その操作をVBAのコードとしてエクセルが作成してくれます。

 

エクセルの開発タブに、マクロの記録というものがあります。これをクリックするとマクロを記録することができます。

 

そして、記録されたマクロを実行すると、先ほど記録した操作を行ってくれるので、エクセルを自動で操作できるようになるということです。

ですが、マクロにはいくつか限界があります。

・手作業を記録するだけなので効率的でない場合がある。
・「マクロの記録」では記録されない操作がある。

・条件分岐、繰り返しといった操作はできない。

 

Pythonなどのプログラミング言語の主要機能は条件分岐と繰り返しですので、この機能がないとプログラム言語としては、十分でなかったりします、

 

そこで出てくるのがVBA(Visual Basic for Applications)ということです。

 

VBAって何?

マイクロソフトのプログラミング言語「Microsoft Visual Basic」を、Officeに搭載したもので、Officeのマクロ機能を補ったり、自動処理させることが可能です。これらを実現するのが、マクロ機能で、記述する言語がVBAです。

 

言語としてのVBAは、他のプログラミング言語と同じで英語で記述できます。もちろん日本語表氏は可能です。それぞれの命令は決まり文句で書かれているので、最初から覚える必要はなく、マクロで作成したVBAを見て理解したり、テキストを読んで理解することができます。

 

マクロ、VBAを学習することのメリット

 

マクロの記述言語であるVBAを覚える事で、今あなたがやっているエクセル業務の大半を自動化することができます。そして、マクロを覚える過程で必然的にエクセルの知識も習得するので、エクセルのレベルが格段に高くなります。

 

特に最近では、RPA(Robot Process Automation)やPython連携が容易にできるので、単にエクセルだけでなく、パソコン上の操作の大半を自動化することができます。

このシリーズ「エクセル マクロVBA」では、初めてマクロを使う人を対象として、無理なくレベルアップできるように説明します。

また、最近のトレンドであるPower Automate DesktopやPythonの連携についても積極的に紹介します。