kaz_javaSpringBootプログラム作成ツールのエクセルVBAをVBに変えてエクセルの外に出す。
■16:44
自動作成マクロVBAをVB.netに変換している。変換方法が上手になってきたといっていいだろう。なんと、コンパイルエラーは取れた。
今日は▲を変換した。
さっそく実行した。まあ、例外発生した。ちょっと理由がわからなかったけど修正し、この箇所は通った。
①関数への配列のアドレスを渡して、中身を変更して戻す処理が、エクセルマクロVBAとVB.netで違っていた。
Module Module4_Utils Public hinagataController() ' 雛型Controller Sub hinagataReadAll(dummy) Call hinagataRead(hinagataController, ActiveWorkbookPathを編集() & "\hinagata\java\controller") End Sub Sub hinagataRead(hinagata, DIR指定) ReDim hinagata(i, 2) ・・・ここでhinagata(i, 2)に値を入れる End Sub
・VBAマクロの時は「hinagataController()」が「ReDim hinagata(i, 2)」になる。が、VB.netでは「hinagataController()」はNothingのままで、値が入らない。そこで、
Public hinagataController(,) ' 雛型Controller Sub hinagataReadAll(dummy) Call hinagataRead(hinagataController, ActiveWorkbookPathを編集() & "\hinagata\java\controller") End Sub Sub hinagataRead(ByRef hinagata(,), DIR指定) ReDim hinagata(i, 2) ・・・ここでhinagata(i, 2)に値を入れる End Sub
とすると、「hinagataController(,)」が「ReDim hinagata(i, 2)」になって値が入る。という解決。多分、VB.netは、Public hinagataController()は1次元で、ReDimで2次元配列にできない。さらに、Byrefにしないとアドレス渡しにならない。らしい。ちょっと不思議。
▲1.AmendViewとRegisterView作成.cls ▲2.DDL文作成Otaasuke.cls ▲3.DbElementsマップ作成.cls ▲4.DetailView作成.cls ▲5.JSP項目値作成.cls ▲6.Joinテーブル達マップ作成.cls ▲7.ListViewとActionStrView作成.cls ▲8.Module1_一気にPGM作成Otaasuke.bas ★9.Module2_Consts.bas ▲10.Module3.bas ★11.Module4_Utils.bas ▲12.RegisterList作成.cls ★13.TextFile.cls ▲14.controllerForJoinC部品作成.cls ▲15.controller作成.cls ▲16.csv作成.cls ▲17.entity作成.cls ▲18.form作成.cls ★19.mail作成.cls ▲20.repository作成.cls ▲21.service作成.cls ▲22.templateなどOtaasuke.cls ▲23.upload作成.cls ▲24.テーブル内DbElement達マップ作成.cls
■22:14
②自動作成マクロVBAのOpenをVB.netで、素直にFileOpen変換したが、SJISファイル読み込みで文字化けした。ので、System.IO.StreamReaderに変更した。
・素直にVB.netのFileOpen変換したもの
FileNumber = FreeFile() FileOpen(FileNumber, (MyPath & MyName), OpenMode.Input) Do While Not EOF(FileNumber) lineData = LineInput(FileNumber) hinagata(i, 2) = hinagata(i, 2) & lineData & vbCrLf Loop If Right(hinagata(i, 2), Len(vbCrLf)) = vbCrLf Then '最後には改行をつけない hinagata(i, 2) = Left(hinagata(i, 2), (Len(hinagata(i, 2)) - Len(vbCrLf))) End If FileClose(FileNumber)
・VB.netのSystem.IO.StreamReaderに変更したもの(文字化け解決)
Dim sr As New System.IO.StreamReader(MyPath & MyName, System.Text.Encoding.GetEncoding("shift_jis")) While sr.Peek() > -1 lineData = sr.ReadLine() hinagata(i, 2) = hinagata(i, 2) & lineData & vbCrLf End While If Right(hinagata(i, 2), Len(vbCrLf)) = vbCrLf Then '最後には改行をつけない hinagata(i, 2) = Left(hinagata(i, 2), (Len(hinagata(i, 2)) - Len(vbCrLf))) End If sr.Close()
■23:50
③自動作成マクロVBAでは文字列と数字を比較した場合、うまい具合に数字にして比較している。VB.netでは""と数字を比較してもエラーにはならないが、多分、数字を文字にして比較しているような気がする。"10">1の結果が違うので。
・自動作成マクロVBA
If Cells(j, cont検索項目順) > i Then
・VB.netの時
if Cells(j, cont検索項目順)<>"" then If Integer.Parse(Cells(j, cont検索項目順)) > i Then End If End If
■24:09
また、明日やろう。
■2021/06/21から、『kaz_javaSpringBootプログラム自動作成◎自動生成ツール』をVectorに載せています。2022年にZenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
www.vector.co.jp
・Zenn本(SpringBoot、Thymeleaf プログラム自動作成(マクロ使用版))
zenn.dev
■2021/06/21から、『kaz_javaSpringBootプログラム自動作成◎自動生成ツール』をVectorに載せています。2022年にZenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
www.vector.co.jp
・Zenn本(SpringBoot、Thymeleaf プログラム自動作成(マクロ使用版))
zenn.dev