kaz_javaSpringBootプログラム作成ツールのエクセルVBAをVBに変えてエクセルの外に出す。
■18:26
①自動作成マクロVBAをVB.netに変換したのがだいたい動いた。が、ちょっと間違いデータを定義エクセルに入れると例外発生が起きる。
定義エクセル・N列(検索項目順)に”A”を入れて、そのまま、「一気に自動作成」ボタン押すと例外発生(at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)とか、at Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String Value))する。
・・・テーブル定義入力確認チェックで、”エラー:「商品情報」シート13行14列:検索項目順を指定する時は、数字を指定してください。入力された値 = A"が出るので、必ず修正してから「一気に自動作成」ボタン押してほしい。
でも、気になる箇所は修正しておく。
・自動作成マクロVBA
if item項目名たち(k) = Null
↓
・VB.netの時
if IsDBNull(item項目名たち(k)) or IsNothing(item項目名たち(k))
・自動作成マクロVBA
If Cells(j, cont検索項目順) > i Then
・VB.netの時
if Cells(j, cont検索項目順)<>"" And IsNumeric(Cells(j, cont検索項目順)) then If Integer.Parse(Cells(j, cont検索項目順)) > i Then End If End If
補足:VB.netの時と書いたが、ここに書いた処理はPOIを使った時のもので、POIでエクセル読んで全データを「シート配列達()(、)」に全部保存して、それを自作Cells関数で読んでいる。VB.netにCellsという関数はないので。
以下が自作関数たち。
Function Cells(ByRef 行 As Integer, ByRef 列 As Integer) As String Cells = CellsOnIDX(アクティブシートIDX, 行, 列) End Function Function CellsForコンスタント(ByRef 行 As Integer, ByRef 列 As Integer) As String CellsForコンスタント = CellsOnIDX(TOOL用コンスタントIDX, 行, 列) End Function Function CellsOnSheetName(ByRef sheetName As String, ByRef 行 As Integer, ByRef 列 As Integer) As String Dim idx As Integer idx = シートIDXMap.Item(sheetName) CellsOnSheetName = CellsOnIDX(idx, 行, 列) End Function Function CellsOnIDX(ByRef idx As Integer, ByRef 行 As Integer, ByRef 列 As Integer) As String Dim str As String If シート配列達(idx)(行, 列) Is Nothing Then str = "" Else str = シート配列達(idx)(行, 列) End If CellsOnIDX = str End Function
②POIのWorkbookFactory.Createの時、他のプロセスがエクセルをすでに開いているとき、例外発生する。これに対応する。
これで、他のプロセスがエクセルをすでに開いていても読み込めるようになる。
・VB.netの修正前
Dim NPOI_book As IWorkbook NPOI_book = WorkbookFactory.Create(エクセルファイル名フルパス)
・VB.netの修正後
Dim XlsFileName As String Dim NPOI_book As IWorkbook Dim inputStream As System.IO.FileStream inputStream = New System.IO.FileStream(エクセルファイル名フルパス, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite) NPOI_book = WorkbookFactory.Create(inputStream)
■22:36
②VB.netの実行ファイルを作って動かした。
思った通り動いている。
・SpringBootAutoCreate.exeとそのほかDLLなど
・画面
■2021/06/21から、『kaz_javaSpringBootプログラム自動作成◎自動生成ツール』をVectorに載せています。2022年にZenn本も書きました。使ってみての感想や間違いの指定や、こうやったほうがいいとかの情報があればメールください。
・Vector
www.vector.co.jp
・Zenn本(SpringBoot、Thymeleaf プログラム自動作成(マクロ使用版))
zenn.dev