DelFusa Blog 総本山

プログラミングの話題とかです。

NEW | PAGE-SELECT | NEXT

≫ EDIT

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

| スポンサー広告 | --:-- | comments(-) | trackbacks(-) | TOP↑

≫ EDIT

プレゼント。全てのExcel開発者へ。

あらためましてクリスマスのプレゼントです。。全てのExcelVBA開発者へ。


:::゜::::::::::::::::::::::::::::::::::。:::::::::::::。:::::::::::::::::::::::::::::::::☆::::.........::::::::::::::::::::☆:::::。:::::::::::::。:::::
:::::::::::。::::::::::::::::::::☆:::.......................  ゜............:::: ::。:::::::::::::::::::::::.......☆。..............  ゜..
.............  ......o ...........::::::::::::::::o:::...........  。..... .....  ......o .......☆....::::::::::::::::o:::...
.....。   .......................:o:::.::::::::::::.......:::::::。:::::......... ......:o:::.::::::::::::.......:::::::。
    ........  ......  .......。    .........  .. ......:::::::::.......:::::::。......:o:::.::::::::::::.......:::::::。
  o   。 o      。☆   .:o:::.::::::::::::.......::::::            ☆
。      o      。    o 。    o  。    o
     。      o  。     o 。    . o      │
  o     o   ○        .         ─☆─
○             .                  │
      ○            _,,,,,,,_     .∩    ∩
                 /´.::::::::::\.    | つ  と |
  ;  .          ,,,, ノ.:;; "∧,,∧ミ    いっ,,,,,c'_ノ    ./ ̄ ̄ ̄ ̄ ̄
  , . , . ;  i~し、 ミ,,,ミ--,,,''ミ,,゚Д゚彡    と/・  `マ.  .│ 
    . . ;/⌒´''☆く~     ミ''"""''ミっ__.(''' _((_,● <  メリー
 (⌒しi,. /´..::.  ...::: i     ノ..::::... "つ____.ノ|ミ,,゚Д゚彡 .∬ |  
   ̄|   ̄ ̄ ̄ ̄ ̄ ̄ ̄しヘ, ミ''""""""''ミ    |(ノ  |.つ.□ \_____
   ゝ ミ☆ MerryChristmas ̄ ̄ し'し'"'    |.    |      
    ` ̄ ̄ ̄|| ̄ ̄ ̄ ̄|| ̄ ̄ ̄  ,ノ|    レ、__,,ノ
     ノ ̄ ̄ ̄  ̄ ̄ ̄ ̄  ̄ ̄ ̄ ̄ ノ     ∪∪
⌒⌒⌒`´⌒⌒⌒´⌒⌒⌒``⌒⌒⌒ ⌒⌒⌒`´⌒⌒⌒´⌒⌒⌒``⌒⌒⌒


この記事は、Delphi アドベントカレンダーには載れません。
だって、Delphiと全く無関係ですもの。

相当前に、ちょっとFacebookで全てのVBA開発者に福音を。と書いたのですが
準備に時間がかかってしまいました。

では、モノです。どうぞ。
CodeDataInOutExcelダウンロード

説明書とか全く書いてないので、説明します。


Excelインストール済みだと前提です。展開すると、次のファイルが見れます。

CodeDataOutputExcel.vbe
  エクセルファイル(xlsかxlsm)をDragDropするとVBAソースを
  ファイルと同階層にファイル名フォルダを作って出力します。

CodeDataInputExcel.vbe
  エクセルファイル(xlsかxlsm)をDragDropすると
  ファイルと同階層のファイル名フォルダから
  ソースファイルをExcelファイルに挿入します。

CodeDataOutputExcelDelete.vbe
  CodeDataOutputExcelと同一機能+
  元のExcelファイルからソースコードを削除します。
  Test.xlsをTest_NoCode.xlsとファイル名変更します。

CodeDataInputExcelDelete.vbe
  CodeDataInputExcelと同一機能+
  元のファイルのテキストファイルを削除します。

Delete系は、ソースの二元管理をしたくない場合に
どちらかしかソースがないようにするために作っています。
-----
これで、Excel開発において、最高に致命的な欠点である
バイナリ内にソースファイルが含まれるという、問題を解消することができます。

バイナリに含まれてしまうことで、VBAプログラムソースの差分が不明で
何が最新版のソースかを判断するのも難しく
バージョン管理のCVSやSVNやGit上にものれない、

そういう問題点が、ExcelでVBA開発する点で、最も不愉快で最も作業効率の悪いものになります。
複数のプログラムにまたがったGrepすらできないわけですし
Excel上のVBAエディター。(VBEと呼ばれるらしい)しか使えず、お気に入りのエディタを
併用することもできません。

ですが、そのような問題を解決するために、このプログラムを作りました。

セキュリティ上の問題があるらしく、そのままの設定では動かないらしく
下記のように設定してください。

プログラムから Office VBA プロジェクトへのアクセスが拒否される
http://support.microsoft.com/kb/282830/ja


> 問題の 2007 Microsoft Office system アプリケーションを開きます。Microsoft Office ボタンをクリックし、[Application のオプション] をクリックします。
> [セキュリティ センター] をクリックし、[セキュリティ センターの設定] をクリックします。
> [マクロの設定] をクリックし、[VBA プロジェクト オブジェクト モデルへのアクセスを信頼する] チェック ボックスをオンにし、[OK] をクリックします。
> [OK] をクリックします。

-----
プログラム上では、下記のページを参考にさせてもらいました。

Excelマクロ/VBAマクロのモジュールをエクスポート - DoldoWorkz
http://moondoldo.com/DoldoWorkz/?Excelマクロ/VBAマクロのモジュールをエクスポート

Excel VBAでモジュールをエクスポートするコード - paz3のおもいつき
http://d.hatena.ne.jp/paz3/20090813/1250134172

ただし、コード上はさらに相当工夫しています。

ExcelVBAのソースコードコントロールする仕組みをもつVBComponentには、
インポートとエクスポートする命令があるのですが
単純な繰り返し動作させると、行末の改行コードがどんどん増えたりする変なバグがあります。

ソースの改変はないのに、インポートエクスポートインポートエクスポートすると
ファイル内容が変わってしまうのは、差分管理にはなかなかつらいのです。

そのあたりの仕様なのか不具合なのかを、修正するために
かなり試行錯誤して解決方法をみつけています。

ソースコードの終端が改行コードで終わっていないもの
(つまり最終行が文字で終わっているもの)に関しては
エクセルファイルにコードをインポートした時点で
ファイル最後は必ず改行コードで終わるように修正されますが
空行が増えていったり減っていったりはしません。

なので、ソースコードのテキストファイルとExcelVBAが連動できます。

ソースは非公開なんだけど、ツールとしてリリース。


全てのExcelVBA開発者向けへのプレゼントです。



⌒ヽ         /                  /       |
  _ノ        ∠_____________ /        .|
           /\  \             |          |
       ゚   .\ \  \               |          |
   ○      / \ \  \           |         /
    />    /  / \ \  \       , "⌒ヽ       /
   ///   ./  /   .\ \  \      i    .i       ./
  ./\\\  /  /     \\  \    .ヽ、_ノ     /
 /  .\\ ./  .∧,,,∧    \\  \     .|     /
 \   \\ .ミ,,゚Д゚ 彡  ./\ \  \    .|    /     /
   \   \\ つ⊂ ~  /   \ \  \   .|   /|    ./
  o .\    \\   ∧,,∧     \ \  \  |  / |   /
     "⌒ヽ .  \\ミ,,゚Д゚ 彡     \ \  \| /  |   /
    i     i  .  \ U  U ∧,,∧ ○ \ \/|/   |  ./
  ○ ヽ _.ノ .\   \\⊂ミ,,゚Д゚ 彡⊃_,.- ''",, -    _| /
           \    \\_,. - ''",. - ''     o  ̄  .|/
            \   \\ ''  ̄ヘ  ○
      ○      \   \\//。       o
    ゚   o   。   .\   \/      ゚
   。              ̄ ̄ ̄   

よいお年を。
スポンサーサイト

| 未分類 | 20:10 | comments:0 | trackbacks(-) | TOP↑

COMMENT















非公開コメント

PREV | PAGE-SELECT | NEXT

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。