crmprogrammer38の日記

主にDWHやSalesforceのプログラムメモです。

【Excel】テンプレートテキスト内の変数を展開してテキスト出力するマクロを作りました

あるテキストの中身を、一部書き換えて別のテキストを作りたい時があります。

 

例えば、Salesforceでロールや、公開グループ、キューなどを作成する場合に、ファイルの名前とファイル内の一部を変更すればデプロイで新規作成ができます。

※ロールや公開グループ、キューであればデータローダで作成できてしまうので、あまりいい例ではありませんでした。デプロイではなく、MetadataAPIのcreateMetadataを使ってコンポーネントを作成する場合で、1つサンプルのコンポーネントを取得して、XMLEncoderでxmlファイルにすれば、そのxmlファイルを元に新規用のxmlが作れます。例えばListViewを大量に複製した場合など便利です。

 

10個程度であれば、1つ1つ手で作ればいいのですが、100個や1000個となると手で作ると時間もかかりますし、作業する手が疲れてしまいます。

 

前置きが長いですが、テンプレートのファイルに差し込む変数を指定して別のファイルに出力するマクロを作成しました。

 

ダウンロードはこちらからです。

 

 使い方

f:id:crmprogrammer38:20170724121049p:plain

  1. テンプレートファイルと展開後ファイルをフルパスで指定します。
    ファイルは全てShift_JISです。(なので、Salesforceメタデータを出力する場合は、xml宣言でutf-8から、Windows-31Jに変更が必要です)
  2. 展開する変数の値を記載します。
  3. 環境変数を展開して保存」ボタンをクリックします。

テンプレートファイルの例

<?xml version="1.0" encoding="Windows-31J"?>
<Role xmlns="http://soap.sforce.com/2006/04/metadata">
    <caseAccessLevel>Edit</caseAccessLevel>
    <contactAccessLevel>Edit</contactAccessLevel>
    <description>%value03%</description>
    <mayForecastManagerShare>false</mayForecastManagerShare>
    <name>%value01%</name>
    <opportunityAccessLevel>Edit</opportunityAccessLevel>
    <parentRole>%value02%</parentRole>
</Role>

 例えば、Salesforceのロールを新規作成するためにxmlファイルを作成する場合はテンプレートファイルを上のようにしておきます。xml宣言では、Windows-31Jに指定します。そして、変数を差し込みたい箇所に%変数名%とします。(VBAの処理内では、プロセスの環境変数を展開しているだけです。)

 

他にも色々テンプレートから変数を展開したい時があると思いますのでお試しください。