コードの構成

さて、前回マクロの記録を使って作成したマクロ。
決まった寸法の押出しか出来ない、なんともつまらないマクロです。

今回はそのマクロを編集し、任意の寸法で押出しを作成できるマクロに生まれ変わらせて見ましょう。

ではまず、前回記録したマクロの内容を確認してみます。
SolidWorksのメニューより、[ツール]→[マクロ]→[編集]を選択し、記録したマクロを開いて編集画面を呼び出します。
(第1章 マクロの確認 参照)

すると、下記のコードが確認出来ます。(※ヴァージョンや操作方法により、内容が異なる場合があります)

' ******************************************************************************
' D:\TEMP\swx0000\Macro1.swb - macro recorded on 00/00/00 by webmaster
' ******************************************************************************
Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = _
Application.SldWorks

Set Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("正面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
Dim vSkLines As Variant
vSkLines = Part.SketchManager.CreateCornerRectangle(0, 0, 0, 0.1320584580134, 0.109642631192, 0)
Part.ClearSelection2 True
Part.SketchManager.InsertSketch True
Part.ShowNamedView2 "*不等角投影", 8
Part.SketchManager.InsertSketch True
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("スケッチ1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.FeatureExtrusion2(True, False, False, 0, 0, 0.05, 0.01, False, False, False, False, 0.01745329251994, 0.01745329251994, False, False, False, False, True, True, True, 0, 0, False)
Part.SelectionManager.EnableContourSelection = False
End Sub

上記を簡単に説明しますと、1~3行はマクロ記録時の情報が注釈として書かれています。
VBで『 ' 』(シングルクォーテーション)以下は、改行されるまでプログラムとして処理されない"コメント(注釈)"となります。
処理内容などの覚書や、他人が見て理解を早めるために注釈を入れておくと便利です。

4~8行は、マクロ全体に有効な変数の宣言です。(詳しくは後述)
マクロの内容に関わらず、固定で宣言されます。(ヴァージョンによって内容は異なります)
また、2つめの変数"Part"は、部品・アセンブリ・図面いずれもこの名前になり区別されていません。
Part=部品というわけでないので混乱しないで下さい。

10~30行は、実際の処理内容を表すコードとなります。
Sub main() ~ End Sub までの処理が、上から順番に実行されます。マクロ再生時、特に指定しない限り必ずmainプロシージャ(※)が初めに処理されます。
(プロシージャとは、Sub ~ End Sub や Function ~ End Function で囲われた、一連の処理の塊を表します。)

ちなみに、この中でも4~8行の変数宣言は可能です。(例:上記コードvSkLines )
その場合、変数は宣言されたプロシージャ内でしか、有効ではありません。

では次に、変数宣言について少し詳しく説明するとしましょう。