下記に質問したいことを記載しますので、確認し教えていただけたら幸いです。
根本から作り直したほうがいいなどの意見は控えてほしいです。
せめてどのように記載すればよいか教えていただけると助かります。
(1)パッケージの指定をできるようにしてください。
→makeEntityにパッケージ名を引数として【ファイル出力時の先頭に追加】をどこに書き方と
どこの処理の部分に入れればよいのか。
(2)ループの中で型を判断して、該当した場合追加するような動きとしてください。
import java.util.List;
import java.util.Map;
import java.util.Date;
→ループの中で判断してから出力したいので。
85行目から89行目の出力は、Import分のあとに出力する必要。
→変数にいれて、出力する順番かえればできます。・・・81行目から、85行目くらいにPrintで直接出力している箇所。型は、type_nameで判断可能と思いますが、いかがでしょう?すごく単純な書き方の一案ですが、Date用Import文の変数を、初期値空で準備しておいて、 Date型があったら、その変数に「import java.util.Date;」って設定して最終的に 出力順を意識して、出力すれば可能かなと。
上記の書き方まったくわからないので教えていただきたい。
下記実装
Sub ボタン1_Click()
Dim strPathName AsString,strSaveAs As String
Dim strFileName AsString
Dim strPackage AsString
DimiAsLong
strPathName=Range("C2").Value&"\"
strSaveAs=Range("C3").Value&"\"
strPackage=Range("C4").Value&"\"
'フォルダの存在確認
IfDir(strPathName,vbDirectory)=""Then'
MsgBox"設計書フォルダは存在しません。",vbExclamation
EndIf
IfDir(strSaveAs,vbDirectory)=""Then'
MsgBox"コード出力フォルダは存在しません。",vbExclamation
End If
'先頭のファイル名の取得
strFileName=Dir(strPathName&"\*.xlsx")
'ファイルが見つからなくなるまで繰り返す
Do While strFileName<>""'
With Workbooks.Open(strPathName&"\"&strFileName)
Fori=1 To.Worksheets.Count
'シート名にBeanの文字がある場合、makeEntityの処理を行う。
If.Worksheets(i).NameLike"*Bean*"Then
makeEntity(strPackage)
EndIf
Next
.SaveAsstrSaveAs&strFileName
.Close
EndWith
'次のファイル名を取得
strFileName=Dir()'
Loop
End Sub
'アクティブなシートからJavaエンティティクラスを作ります
Sub makeEntity(ByVal strPackage As String)
'定数
br=vbNewLine'改行。vbCrLfだと行頭に余計な二重引用符が付く
tb=vbTab
tb2=vbTab&vbTab
'テーブル記載開始位置
x_offset=2'列
y_offset=9'行
'class_description=Cells(2,3).Value'クラスの日本語名
class_name=Cells(5,3).Value'エンティティ名
'package_name=Cells(5,3).Value'パッケージ名
'出力ファイルパス
output_path=ThisWorkbook.Path&"\"&class_name&".java"
'書き込み
'ファイルポインタを作成
fp=FreeFile
Openoutput_pathForOutputAs#fp
'Print#fp,"package"&package_name&";"
'import文はあきらめる
Print#fp,""
Print#fp,"/**"&br_
&"*"&class_description&"を表すエンティティ。"&br_
&"*/"
Print#fp,"publicclass"&class_name&"{"
'属性読み込みループ
x=x_offset
y=y_offset
str_vars=""
str_func=""
DoWhileTrue
'カラムの並び順は,左から
'日本語名称,英字名称,型
jp_name=Cells(y,x).Value
type_name=Cells(y,x+1).Value
var_name=Cells(y,x+2).Value
'終了判定
IfLen(var_name)<1Then
ExitDo
EndIf
var_name_big=SmallUnderbar2Pascal(var_name)
'member変数
str_vars=str_vars_
&tb&"/**"&br_
&tb&"*"&jp_name&"を保有する。"&br_
&tb&"*/"&br_
&tb&"private"&type_name&""&var_name&";"&br&br
'getter
str_func=str_func_
&tb&"/**"&br_
&tb&"*"&jp_name&"のgetter"&br_
&tb&"*"&br_
&tb&"*<pre>"&br_
&tb&"*<p><b>【仕様詳細】</b></p>"&br_
&tb&"*"&jp_name&"を取得します。"&br_
&tb&"*</pre>"&br_
&tb&"*"&br_
&tb&"*@author""NihonUnisys,Ltd."""&br_
&tb&"*@return"&jp_name&br_
&tb&"*/"&br_
&tb&"public"&type_name&"get"&var_name_big&"(){"&br_
&tb2&"returnthis."&var_name&";"&br_
&tb&"}"&br&br
'setter
str_func=str_func_
&tb&"/**"&br_
&tb&"*"&jp_name&"のsetter"&br_
&tb&"*"&br_
&tb&"*<pre>"&br_
&tb&"*<p><b>【仕様詳細】</b></p>"&br_
&tb&"*"&jp_name&"を設定します。"&br_
&tb&"*</pre>"&br_
&tb&"*"&br_
&tb&"*@author""NihonUnisys,Ltd."""&br_
&tb&"*@param"&var_name&""&jp_name&br_
&tb&"*/"&br_
&tb&"publicvoidset"&var_name_big&"("&type_name&""&var_name&"){"&br_
&tb2&"this."&var_name&"="&var_name&";"&br_
&tb&"}"&br&br
y=y+1
Loop
'str_vars=br&tb&"//------メンバ変数ここから------"&br&br_
'&str_vars_
'&tb&"//------メンバ変数ここまで------"&br&br
'
'str_func=br&tb&"//------getter+setterここから------"&br&br_
'&str_func_
'&tb&"//------getter+setterここまで------"&br&br
Print#fp,str_vars
Print#fp,str_func
Print#fp,"}"
Close#fp
'MsgBox"完了"
End Sub
'全小文字アンダーバー区切りの文字列を,大文字始まり区切りに変換
Function SmallUnderbar2Pascal(str)
'アンダーバーで分割
Dimarr
'splitの戻り値はバリアント型で宣言されていなければならない
arr=Split(str,"_")
Fori=0ToUBound(arr)
word=arr(i)
'1文字目は大文字に
word_head=StrConv(Mid(word,1,1),vbUpperCase)
'先頭文字のインデックスが1である点に注意
'SubStrは使わない
word_tail=Mid(word,2,Len(word)-1)
arr(i)=word_head&word_tail
Next
SmallUnderbar2Pascal=Join(arr,"")
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでショッピングカート機能を...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Fortranでのファイル名操作につ...
-
if文のなかで
-
$a = ( $b == $c ) ? $d、 この...
-
phpのカウンタのリセット方法
-
PHPとHTML+Xamppの掲示板で画像...
-
PHPで画像の渡しが上手く行きま...
-
複数行のデータ一括更新に関して
-
POSTデータのNAME属性をVALUEに...
-
PHPでPCのローカル時刻は取得出...
-
POSTの値を配列として受け取っ...
-
IEで、フォームにたとえば
-
チェックボックスを用い、MySQL...
-
PHPでURLにジャンプするには?
-
フォームの途中で追加するには
-
POSTを使わずに値を渡す方法
-
フォームで作った送信ボタンが...
-
検索時の選択内容を保持する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
重複を防ぐ記述について教えて...
-
VBA で、スペースを含むファイ...
-
PHPで入力フォームでデータを確...
-
Flaskでサーバー立ち上げに関して
-
phpで変数を使ってcopyできない
-
ファイル名を変更してアップロ...
-
PHPからHTMLへの変数の受け...
-
$_SESSIONに渡した後はそのまま...
-
テキストボックスの値を取得したい
-
openCVのトラックバーについて
-
scanfでの読み込み文字数制限
-
アップロードファイル名の文字化け
-
PHP MySql 画像を取得
-
Fortranでのファイル名操作につ...
-
ポインタ配列をfscanfで読み込...
-
UPDATEできない
-
WordのIDataObject::GetData呼...
-
C# 同じ処理をまとめたい
-
POSTの項目に追加
-
イタリア人がCatherineと聞いた...
おすすめ情報