投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/10/16 18:30:01
> dim ~ as New クラス名
『Dim ~ As New クラス名』ですよね。
大文字小文字をきちんと使い分けた方が良いですよ。

vba → VBA、c# → C#、sub → Sub、cad → CAD なども同様に。



それと、プログラムコードに適切なインデント(字下げ)を入れることをお奨めします。
たとえば

If myView Is Nothing Then
MsgBox "ビューをアクティブにして" & vbNewLine & "やり直してください。"
Exit Sub

ではなく

If myView Is Nothing Then
    MsgBox "ビューをアクティブにして" & vbNewLine & "やり直してください。"
Exit Sub

とします。



> '//下記の部分で構文エラーになる 
> fl.readfl(flName,txt1)
VBA におけるメソッドの呼び出しは、下記のいずれかの構文でなければなりません。
今回のケースでは、① または ② に書き直してみてください。

fl.readfl flName, txt1               '①引数を 2 つ渡す。戻り値を受け取らない。 
Call fl.readfl(flName, txt1)         '②引数を 2 つ渡す。戻り値を受け取らない。 
result = fl.readfl(flName, txt1)     '③引数を 2 つ渡し、戻り値を受け取る。 
Let result = fl.readfl(flName, txt1) '④引数を 2 つ渡し、戻り値を受け取る。(非推奨な構文) 
Set result = fl.readfl(flName, txt1) '⑤引数を 2 つ渡し、戻り値としてオブジェクトを受け取る。 



★Sub プロシージャなメソッドの呼び出しには、① または ② の構文を使います。
 今回の readfl は Sub なので、① (あるいは②)が必要であるということです。
 ① の構文を使う場合には、引数全体を丸括弧で囲んではいけませんのでご注意ください。
 ② の構文を使う場合はその逆で、引数全体を丸括弧で囲む必要があります。
 ただし渡すべき引数が無い場合 (引数が 0 個の場合) には、②でも丸括弧を記述しません。

 提示いただいたコードで言うと、下記の部分で ① の構文が利用されています。

'Sub メソッドに引数 1 個を渡して呼び出している箇所 
 Part.ClearSelection2 True

'Sub メソッドを引数なしで呼び出している箇所 
 Part.WindowRedraw
 uf1.Show
 csvFile.Close




★Function プロシージャなメソッドの呼び出しには、① ~ ④ が利用できます。
 メソッドの戻り値を無視する場合は、① または ② の構文です。たとえば下記がそうですね。

'Function メソッドに引数 1 個を渡して、戻り値を読み捨てている箇所 
 MsgBox "ビューをアクティブにして" & vbNewLine & "やり直してください。"


 一方、戻り値を受け取る必要がある場合は、③ または ④ を用います。
 たとえば下記が、③ の構文による表記になっていますね。

'Function メソッドに引数 1 個、2 個、3 個、6 個を渡し、戻り値を変数に受け取っている箇所 
 num1 = Len(txt1)
 splitcsvData = Split(csvData, ",")
 boolstatus = Annotation.SetPosition(0.2, 0.2, 0)
 flName = swApp.GetOpenFileName("File to Attach""", Filter, fileOptions, fileConfig, fileDispName)



★引数を受け取るプロパティの呼び出しも同様に、③ または ④ を使います。
 今回のコードでは、引数付きのプロパティを読み取っている行は無いようですが。


★なお戻り値の型が、数値・日付・Boolean・文字列・配列・ユーザー定義型などの場合は
 ③ または ④ が使われますが、戻り値がオブジェクト型である場合は ⑤ を使う必要があります。
 今回のケースで言うと、下記で ⑤ の構文による表記が用いられていますね。

'オブジェクトを返す Function に、引数 0 個、1 個、2 個を渡して呼び出している箇所 
 Set Annotation = myNote.GetAnnotation()
 Set myNote = Part.InsertNote("P/C  2")
 Set csvFile = fso.OpenTextFile(fnm, 1)




> クラスを作成する際に、
> dim ~ as New クラス名
> でいいと思いますが、
実はあまり良くないのです。詳細は下記参照。
https://thom.hateblo.jp/entry/2016/09/27/221527


> エクセルのvbaではなく、
> 3d-cadのvbaです。
どの 3D-CAD 製品を使用しているか、
質問時にはバージョンと製品名もはっきり記載した方が良いですよ。


> Set swApp = Application.SldWorks
なるほど、SolidWorks シリーズですか。(私は使ったことが無いのですが)

VBA 搭載の 3D CAD というと、他にはオートデスク社の
Inventor® や AutoCAD® などが有名ですね。