次の操作を行うためのボタンをリボンに追加するExcel.xlamファイルがあります。
- ActiveSheetをスキャンして、事前に設定されたパラメーターを確認します
- ソーステキスト(文字列値、VBAモジュールに直接ハードコードされている)を取得し、指定された領域を手順1で取得したパラメーターに置き換えます。
- 計算されたテキストを含むファイルを生成します
ソーステキストはパスワードで保護でき、.xlamファイルがある場所に別のファイルをドラッグする必要がないため、この方法で保存します。ソーステキストは、次のような「ソース」と呼ばれる別のモジュールに保存されます(ヒアドキュメントがないことをVBAに感謝します)。
'Source Module
Public Function GetSource() As String
Dim s As String
s = ""
s = s & "This is the first line of my source text" & vbCrLf
s = s & "This is a parameter {par1}" & vbCrLf
s = s & "This is another line" & vbCrLf
GetSource = s
End Function
関数は正常に動作します。私の問題は、ソーステキストを更新したい場合、.xlamファイルで手動で更新する必要があることです。私がやりたいのはSub ImportSource()
、ファイルを解析する別のモジュールでのようなものを構築し、プログラムで「ソース」モジュールを再構築してから、そのモジュールを計算されたソースコードに置き換えることです。私が知らないのは、モジュールのソースコードを文字列変数の値に置き換えるかどうか/方法です。
それは、最悪の場合のメタプログラミングのようなものであり、哲学的には、これを自分の核心まで行うことに反対しています。しかし、実際には、それを行うかどうか、そしてその方法を知りたいと思います。