teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2017/10/23 08:56

投稿

jawa
jawa

スコア3020

answer CHANGED
@@ -24,4 +24,78 @@
24
24
  今回はご自身で作成されたコードの提示がないため、具体的なサンプルコードの提供は控えさせていただきました。
25
25
  参考サイトの紹介と簡単なサンプル提供のみとさせていただきましたが、これで方向性をつかんでいただければと思います。
26
26
 
27
- 参考になれば幸いです。
27
+ 参考になれば幸いです。
28
+
29
+
30
+ (追記)
31
+ ---
32
+ ```
33
+ 'メイン処理
34
+ Private Sub Main()
35
+
36
+ Const F_PATH = "c:\temp\testFormat.txt"
37
+
38
+ Dim shtTags As Worksheet
39
+ Set shtTags = Sheets("固定値シート")
40
+
41
+ Dim strSQL As String
42
+ '①テンプレート取得
43
+ strSQL = GetTemplate(F_PATH)
44
+
45
+ '②タグ置換
46
+ strSQL = ReplaceTag(strSQL, "INSTANCENAME", shtTags.Cells(1, "B").Value)
47
+ strSQL = ReplaceTag(strSQL, "PACKAGENAME", shtTags.Cells(2, "B").Value)
48
+ 'strSQL = ReplaceTag(strSQL, "tableName", "TBL_A")
49
+
50
+ '③作成したSQLをテキスト保存(未実装)
51
+ Call SaveTemplate(F_PATH, strSQL)
52
+
53
+ End Sub
54
+
55
+ '①テンプレート取得
56
+ Private Function GetTemplate(ByVal vsFilename As String) As String
57
+ Dim f_num As Integer ' ファイル番号
58
+ Dim rcd As String ' テキストファイルの1行分文字列(1レコード)
59
+ Dim strRet As String
60
+
61
+ f_num = FreeFile
62
+ Open vsFilename For Input As f_num
63
+
64
+ Do Until EOF(f_num)
65
+ Line Input #f_num, rcd
66
+ strRet = strRet + vbCrLf & rcd
67
+ 'Debug.Print rcd
68
+ Loop
69
+
70
+ 'Debug.Print strSQL
71
+ Close f_num
72
+
73
+ '取得した内容を戻り値として返す
74
+ GetTemplate = strRet
75
+ End Function
76
+ '①テンプレート取得(一気に読むバージョン)
77
+ Private Function GetTemplate2(ByVal vsFilename As String) As String
78
+ Dim fso As Object
79
+ Dim strRet As String
80
+ Set fso = CreateObject("Scripting.FileSystemObject")
81
+ With fso.GetFile(vsFilename).OpenAsTextStream
82
+ strRet = .ReadAll
83
+ .Close
84
+ End With
85
+ GetTemplate2 = strRet
86
+ End Function
87
+
88
+ '②タグ文字列置換
89
+ Private Function ReplaceTag(ByVal vsBASE As String, ByVal vsTAG As String, ByVal vsVALUE As String) As String
90
+ Dim strRet As String
91
+ 'タグを置換する
92
+ strRet = Replace(vsBASE, "{" & vsTAG & "}", vsVALUE)
93
+ '置換した内容を戻り値として返す
94
+ ReplaceTag = strRet
95
+ End Function
96
+
97
+ '③ファイル保存(未実装)
98
+ Private Sub SaveTemplate(ByVal vsFilename As String, vsText As String)
99
+ MsgBox vsText
100
+ End Sub
101
+ ```