ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

仕様書からプログラムソースを生成する方法(Excelの仕様書編 その5:複数の出力)

2006-10-30 12:40:29 | ケータイ

 シリーズ仕様書からプログラムソースを生成する方法のつづきです。

 いままで、hina1.txtからout1.txtを書き出すという1つのものしかやっていませんでした。
 しかし、実際には、たとえば、BREWのソースコードを出す場合には、いくつものファイルを出力しないといけません(それに対応するいくつもの雛型もあります)。
 どーしましょう。っていうお話です。




■方針
 作業用にシートを作ります。
 そのシートは、対象となる雛型ファイル名、仕様書シート名、出力先ファイル名が書いてあります。
 そして、ボタンが押されたとき行う作業である、shiyoToFile()で、このシートを読み込み、順次、makefileを呼び出して、ファイルを作成していきます。

 なお、実際には、上記作業用シートを自動生成したり、その他の処理をしないといけないケースがあるので、作業前処理、後処理を追加し、それを別モジュール(別マクロファイル)としておきます。




■作業用シート

 上記にかいた、対象となる雛型ファイル名、仕様書シート名、出力先ファイル名が書いてある作業用シートは、以下のような形です。

 ここに、今回は、手書きで、雛型ファイル名、仕様書シート名、出力先ファイル名を入力しました(が、場合によっては、このシートを自動的に編集するというケースのほうが、多いかと思います)




■修正プログラム

 ボタンが押されたとき動くサブルーチン、shiyoToFile()を、以下のように修正します。
Public outdata As String
Public lpstr_pos As Integer
Public lpgyo As Integer

Public Const sagyo_shname As String = "作業一覧"
Public Const sagyo_str_gyo As Integer = 5
Public Const sagyo_hina_keta As String = "A"
Public Const sagyo_sh_keta As String = "B"
Public Const sagyo_out_keta As String = "C"

Sub shiyoToFile()
    Dim gyo As Integer
    Dim hina_name As String
    Dim sh_name As String
    Dim out_name As String
    
            '//================================//
            '//  開始時の前処理(固有処理)      //
            '//================================//
    Call initAppData
    
            '//================================//
            '//  作業一覧に基づき出力(共通処理)//
            '//================================//
    gyo = sagyo_str_gyo
    Do While Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo)) <> ""
        
        hina_name = Sheets(sagyo_shname).Range(sagyo_hina_keta & CStr(gyo))
        sh_name = Sheets(sagyo_shname).Range(sagyo_sh_keta & CStr(gyo))
        out_name = Sheets(sagyo_shname).Range(sagyo_out_keta & CStr(gyo))
        Call makefile(hina_name, sh_name, out_name)
        
        gyo = gyo + 1
    Loop
    
            '//================================//
            '//  終了時の後処理(固有処理)      //
            '//================================//
    Call freeAppData
    
    MsgBox "終わりました"

End Sub

(上記 < > ¥は、本当は半角。以下省略)

 で、先ほどの「場合によっては、このシートを自動的に編集するというケース」などでは、initAppDataでその内容を記述することになります。また、余計なシートを作った場合は、上記ソース中の freeAppDataで削除することになります。
 この、前処理initAppDataと後処理freeAppDataは、後述するように、別モジュールとして作ります。




■前処理、後処理
前処理initAppDataと後処理freeAppDataは、

・まず、ここの3に書かれている方法で、標準モジュールを追加します。

・そして、下の図のように、オブジェクト名を変えると名前がかわるので、
 いままで、shiyoToFile()とかをかいていたモジュールのオブジェクト名を標準処理、
 今回作ったほうを、ユーザー作成部分とします。

・そして、下の図の右側に書かれているように、前処理initAppDataと後処理freeAppDataの
 サブルーチンを書きます。
  今回は何も処理しないので、なにも書かなくていいです。





 これであとは、作業一覧に追加すれば、処理をどんどんやるようになります。
 今回はここまで。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« ソフトバンク、予想外で受け... | トップ | Javaの画面表示-その15:A... »
最新の画像もっと見る

ケータイ」カテゴリの最新記事