エクセルは、表作成や計算ソフトとして知れ渡っていますが、エクセル内にあるマクロを使うと機械制御ができます。 機械を動かす方法は、エクセルのマクロを使い、計測機や、XYローダー、画像処理器、温調器などの情報を数値としてエクセル内に取り込み、エクセルの計算式を使い、結果を装置に送り、機械作業を継続します。利点は、エクセル内にあるCellの量が膨大にあり、機械作業の条件や取り込むデーターを多量に保存することができ、そのデーターを利用し、機械作業ができます。これは、人が、目や足を使い、脳に蓄えられた記憶をもとに手で色々な作業をすることに似ています。実際に機械が動作している画像が添付できませんが、この方法で作成した製品の精度は、Jpeg写真のように0.00*%の精度で加工が可能になりました。

P1000229

エクセル内には、作業用シート、条件用シート、条件に従って機械作業を実施するシートを作り、機械作業を行います。作業に送り込むデーターは、開始位置と作業する距離だけですが、エクセルを使えば、開始位置と作業する距離を自由に変更できます。開始位置は、画像装置を使い、パターン認識から加工位置のズレを読み取り、その結果をエクセルに送り、補正します。距離は、計測器で測定した値をエクセルに送り、値に応じて距離を長くしたり、短くしたりして、目的の値になるように加工します。1回の作業は、単純ですが、エクセルの場合は、表のセルに従って単純な作業を何千回も繰り返します。また、作業の結果や測定器さへ準備できれば、周囲の環境や時間をエクセル内に記録することも可能です。逆に周囲の環境や時間に応じて作業をさせることもできます。

では、エクセルで機械を動かすために必要な条件は、エクセルについているマクロ(VBA)と機械を動かすための通信の事を知らねばなりません。

1.マクロに関して

マクロは、エクセルに付随しているVBAですが、ツールバーの開発の項目にマクロの記録というコードがあります。以下は、私が、VBAソフトを作るときの方法です。マクロの記録をクリックします。→Macro名の記入を催促されます。 そのまま、OKをクリックします。エクセル内のセルを選んでドラッグし、Deleteで削除するなどの作業をします。→マクロの記録が終了に変わっていますので、クリックします。→図形の挿入を選び、適当な写真を選び、エクセルに挿入します。写真の大きさを小さくし、  エクセルに配置します。写真を右クリックで選択するとマクロの登録の項目があり、選択してクリックします。→新規記録か否か聞いてきますので、表内にあるMacro1を選びます。新規記録が、編集にかわります。OKをおします。これで、写真を選ぶとVBAが動作し、マクロの記録で行った作業を実行します。マクロのプログラムをみるために写真を右クリックし、マクロの登録を選ぶと先の画面が表示され、編集のボタンが表示されます。押してみるとVBAのプログラムがでてきます。

Sub Macro1()

Range(“D147:E151”).Select

Selection.ClearContents

End Sub

意味は、セルD147からE151を選ぶ。Range(範囲).(ドット)Select(選ぶ)。選んだところの内容をクリアにしなさい。この作業で選ぶという行為が繰り返されていますので、範囲をクリアにするでもよいように思えます。また、Macro1という名前は、重複しますので削除という名前に変えます。下記のように

Sub 削除()

Range(“D147:E151”).ClearContents

End Sub

この内容を記述するためにMacro1の内容をドラッグし、右クリックし、コピーし、カーソルをEnd Subの下にして貼り付けます。同じ内容が、貼り付けられますので、上記のように内容を変えます。エクセルにもどり、写真を右クリックし、マクロの登録を選択すると編集の画面に削除の項目がでてきます。削除を選んでOKボタンを押します。こうすると削除というVBAプログラムを自分で作ったということになります。次に削除のプログラムのRangeの範囲を変えます。さらに、削除のプログラム内にMacro1を入れます。

Sub 削除()

Range(“D47:E51”).ClearContents

Macro1

End Sub

こうして、写真を選択すると削除で変更した範囲とMacro1でプログラムした範囲が、削除されます。

このようにマクロのサブプログラムは、マクロの記録を使うと次次に作成できます。サブのマクロ名を仕事の内容がわかるように変更します。例えば、

Sub 字体()

Range(“A7:E7,C14:D16”).Select  ‘ 範囲設定

Range(“C14”).Activate          ‘ C14から WIth以下の書式にする

With Selection.Font

.Name = “AR P丸ゴシック体E”

.Size = 12

End With

End Sub

Sub メッセージあいさつ()

MsgBox “ようこそ。カンタン!Excel講座へ”

End Sub

Sub 継続確認()

Dim Modori As Integer

Modori = MsgBox(“処理を続けますか?”, vbYesNo + vbExclamation, “継続確認”)

If Modori = vbNo Then

Exit Sub

End If

MsgBox “処理を続けました。”, vbOKOnly, “処理続行”

End Sub

このようにマクロでできたサブプログラムの名前を内容がわかる名前にし、保管します。サブプログラムを作る方法は、マクロの記録を使う方法とネットでエクセルマクロで検索すれば、ネットの住民が、公開しています。公開されたマクロをドラッグコピーし、自分が作ったマクロ分のEnd Subの下の行に貼り付けます。貼り付けたマクロの動作を確かめるためにカーソルをサブプログロムに配置し、実行ボタン(▲の横むき)押します。動作の内容がわかったら、サブプログラムの名前を自分の理解できる名に変更します。動作しなければ、削除します。動作を確認するためには、範囲設定などの最初に書いてある文章を理解する、あるいは、エクセル上に数値などを書き込み準備する必要があります。.の後の英語が、動詞なら、日本語の“を“、名詞なら“の”を入れて読むと内容がわかります。他には、=は、”右の数値を左に代入する。“ :は、”~”、, も”~“、をあてはめると内容がわかります。このようにしてサブのプログラムを自分なりの名前にして、動作を知れば、エクセル上で何か仕事をさせるときにサブで使われている言語をコピーして、貼り付けることもできますし、前に書いたようにサブ名をプログラムに入れて、使用することもできます。人に例えるとサブプログラムは、一定の動作をする心臓や胃、肺にあたり、その動きをするための筋肉が、VBA言語です。エクセルに記憶された数値を使って、セルに書きこんだ数値やIF文で書かれた内容、計算式で計算した結果、などを使って、サブの臓器を動かし、手(作業機械)や足(XYローダー)、目(画像装置)、口(ディスプレイ)を動かします。

 

VBAプログラムは、ネット内で公開されています。

簡単なマクロを列挙しておきますので実行してみてください。

Sub 代入()
Dim CellValue As Double

Range(“A1”).Value = 1 ‘A1セルに1を代入
CellValue = Range(“A1”).Value ‘CellValueを1に

Range(“A5”).Value = CellValue ‘A5セルに1を代入

End Sub
Sub 色()
Dim CellValue As Double

Range(“A1:Z50”).ClearContents
Range(“A1:Z50”).Interior.ColorIndex = 0 ‘セル範囲を余白

For n = 0 To 4 ‘For Next 間繰り返し

For m = 0 To 9

Range(“B2”).Offset(n, m).Interior.ColorIndex = i ‘セル範囲に色 Offset(n, m):行列の入れ替え
Range(“B2”).Offset(n, m).Value = i ‘セル範囲に色番号
i = i + 1
Next m

Next n

End Sub

Sub もし()

If Range(“A5”).Value = 5 Then
Range(“A5”).Interior.ColorIndex = 35
Else
Range(“A5”).Interior.ColorIndex = 27 ‘黄色
End If

End Sub

Sub もし1()

If ActiveCell.Value = 2 Then ‘ActiveCell:選択セル
ElseIf ActiveCell.Value = 3 Then
ActiveCell.Interior.ColorIndex = 33
ElseIf ActiveCell.Value = 4 Then
ActiveCell.Interior.ColorIndex = 34
ElseIf ActiveCell.Value = 5 Then
ActiveCell.Interior.ColorIndex = 35
ElseIf ActiveCell.Value = 6 Then
ActiveCell.Interior.ColorIndex = 36
End If

End Sub
Sub 繰り返しDoLoop()

Dim i As Integer

i = 0
Do
Range(“A1”).Offset(i, 1).Value = Range(“A1”).Offset(i, 0).Value
i = i + 1
DoEvents
Loop While Range(“A1”).Offset(i, 0).Value <> “”
End Sub
Sub 時間()

ActiveCell.Offset(1, 0).Value = Time
ActiveCell.Offset(2, 0).Value = Now

End Sub

 

 



↑もしよろしければ、クリックして応援してください。
Push the button,and please support a ranking if you'd like.