概要
Excelを使ってc#ソースコードの雛形を管理しています。
ソースコードの自動生成(オリジナルのスキャフォールド)を開発するために、いろいろと試行錯誤した結果、Excelにコードの雛形を入れて、管理する楽な方法をみつけたのでメモします。
要件
1.ソースコードの雛形などの複数行データを効率的に保存/編集したい
2.編集時は一時的にエディタを使って複数行を楽に編集したい
3.ソースコードの雛形を管理するためのパラメータを保存したい
実現イメージ
エクセルで管理している複数行のデータをエディタで開いて編集しているところです。
実装
2.の部分は、以下のようなVBAでメモ帳アプリとの連携を実現しました。
ソースコードの管理に限らず、複数行のデータをエクセルで管理する場合におすすめです。
ショートカットキー CTRL + E 等と関連付けておくと、更に便利です。
vba
Option Explicit
Const CodeColumnNo As Integer = 2
Public Sub EditCode()
Application.ScreenUpdating = False
Dim FN, Folder As String
Dim fso, TextFile, wsh As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set wsh = CreateObject("WScript.Shell")
'--- 適当なファイル名を作成
FN = Cells(ActiveCell.Row, 1) & "_" & Mid$(CreateObject("Scriptlet.TypeLib").GUID, 2, 36) & ".txt"
Folder = ThisWorkbook.Path & "\Temp\"
If fso.FolderExists(Folder) = False Then
fso.CreateFolder Folder
End If
'--- セルに格納されたソースコードをテキストファイルに出力
With fso.CreateTextFile(Folder & FN)
.Write Replace(Cells(ActiveCell.Row, CodeColumnNo), vbLf, vbCrLf)
.Close
End With
'--- テキストファイルを開いて閉じられるまで待機
wsh.Run """" & Folder & FN & """", , True
'--- テキストファイルに保存された変更内容をセルに書き戻す
With fso.OpenTextFile(Folder & FN)
Set TextFile = fso.OpenTextFile(Folder & FN)
Cells(ActiveCell.Row, CodeColumnNo) = Replace(TextFile.ReadAll, vbCrLf, vbLf)
End With
SetCodeColumnStyle ActiveCell.Row
Application.ScreenUpdating = False
End Sub
Public Sub SetCodeColumnStyle(i_Row As Integer)
'--- 長いコードは鬱陶しいので縮小モードにする
With Cells(i_Row, CodeColumnNo)
If Cells(i_Row, CodeColumnNo) <> "" Then
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = True
.ReadingOrder = xlContext
.MergeCells = False
End If
End With
End Sub
・リポジトリ
https://github.com/Implem/Implem.CodeDefiner
・マクロ格納先
https://github.com/Implem/Implem.CodeDefiner/tree/master/Implem.CodeDefiner/App_Data/Definitions