脱Excelができない理由の一つとして、情シスやパッケージで導入したシステムの力量不足が挙げられます。前者の場合は開発者自身の力量不足と責任回避の為、後者の場合は主に予算の都合でカットされる。その為、実際の現場の業務との差を埋めてくれるのは、他でもないExcelであり、時には基幹業務システムの1部を担うことも珍しくありません。

そんなケースに於いて、Excelのデータを基幹業務システムでインポートできる形式に変換してといった作業があります。1個2個程度ならVBAなど書かなくても良いですが、利用者が多数で利用頻度も高いとなるとプログラムを作る必要があります。今回もSAP HANA上にローカルデータを取り込む為のものを作る事になりました。(API叩いて流しこめばいいじゃんって思ったそこのあなた。それ金融系のコンサル会社の担当にも言ってあげて下さい)

今回はSAP向けにTSV形式でExcelのデータを変換して出力するアドインを作ってみました。

今回利用するファイル等

アドイン形式であるxlamで作成しているので、導入が必要になります。また、出力されるtextファイルはTSV形式で、文字コードはShift-JIS形式としています(VBA内のオプションを変更すれば、UTF-8での出力も確認済みです)。

事前準備

今回のファイルはアドイン形式であるため、利用する為にはいくつかの準備が必要になります。アドインですので、単体では動作しません。手順に従って導入する事で、全てのExcelファイルで利用する事ができるようになります。

開発タブを表示する

アドインの導入には開発タブの表示が必要ですが、デフォルトの状態では「表示されていない」人が殆どです。以下の手順で開発タブを表示するようにしましょう。
  1. ​メニューより「ファイル」⇒「オプション」を開きます。
  2. 左側サイドバーより「リボンのユーザ設定」をクリックします。
  3. 右側のリボンのユーザ設定内に「開発」があり、チェックが外れていると思うので、チェックを入れてあげます
  4. OKボタンを押して完了

図:開発タブを表示しないと導入できない

アドインを導入する

添付のtabusaku.xlamファイルをデスクトップにでも保存してください。その後、以下の手順でアドインを導入してください。
  1. アドインは自分のマイドキュメントの「ドキュメントフォルダ」にでも入れておきましょう(デスクトップだと失くす可能性があるため)
  2. Excelの「開発タブ」を開きます。
  3. Excelアドイン」をクリックします。
  4. アドインダイアログが出たら、「参照」をクリックします。
  5. ファイルの参照ダイアログが出てきます。右下の「アドイン(*.xlam, *.xla, *.xll)」の部分は、「すべてのファイル(*.*)」に変更します。
  6. 1.で保存したtabusaku.xlamを見つけてOKボタンを押します。
  7. これで追加完了。OKボタンを押して終了です
  8. リボンの所に「タブ作君」というタブが出てくるようになり、「TSVへ変換出力」のボタンが追加されているはずです。

図:アドイン追加ダイアログ

参照設定の追加

アドインとして作る場合、以下のモジュールを参照設定に追加しておく必要があります。アドインを使うだけの人は特に何も作業は必要ありません。この設定はこのアドインを作成するプログラマの作業になります。

  • Microsoft ActiveX Data Object 6.1 Library – テキストデータの書き出し時に利用する
  • Microsoft Office 16.0 Object Library – リボンで利用する
  • Microsoft Scripting Runtime – 連想配列のDictionaryやファイルの有無、特殊フォルダの取得などで利用する

図:参照設定が必要になります

使い方

このアドインは以下のような機能を持っています。

  1. ​添付してある見本のExcelファイルのような形式の時に、選んだ行(Ctrlキーで飛ばして行選択も対応)だけをTAB区切りテキストとして出力します。
  2. ​出力先はデフォルトではシート名(デスクトップを指定)がファイル名になりますが、変更する事が可能です。
  3. タイトル行(項目名のある行)を含めた場合には、その行も出力されます。ヘッダーありの場合にはタイトル行も選択行に含めてください。
  4. 出力したデータは、Shift-JIS形式のTAB区切りテキスト​です(CSVではありません)
  5. ​​復数行を選んだら、「タブ作君」というタブ内にある「TSVへ変換出力」をクリック、保存先を聞いてくるので、選んでOKで出力完了です。
  6. 普通のテキストファイルなのでメモ帳などで中身を確認する事が可能です。

図:行選択してこのボタンを押す

ソースコード

リボンのXMLコード

  • nikuというイメージファイルを埋め込んであります。
  • ボタンクリック時には、chngemanというコードが実行される仕組みです。
  • ファイル読み込み時には、OnLoadというコードが実行され、リボンの初期化が実行されます。
  • 今回のコードは、Custom Ribbon UI  Editorを使って作成しています。

リボン初期化のコード

  • リボンを初期化するOnLoadのコマンド及び変換実行のchangemanのコードです

メインのVBAコード

関連リンク

共有してみる: