2015年01月26日

気が付けば Excel2013のとあるバグが治っていた 撤回。なおっていなかった。

Exclel2013 VBA の 右クリックメニューに追加した メニューの OnActionに 記述したメソッド内に CommandBars.FindControl があると、初回呼び出しで落ちる: NN Space BLOG-NN空間ブログ


上記のエラーが、現時点のWindowsUpdate済み Windows8.1+Office2013の環境では発生しなくなっていました。 バグ回避(VBAのほうで対策をする)に深入りしなくてよかった。。。。。


20150129_213555 今確認したところ治っていませんでした。なぜだ・・・・
しかし、起動時のマクロ読み込みで固まっていたように見える事象は改善していました。
以下の文章は読み飛ばしてください。


現在のバージョンは以下の通り。(2013のバージョン情報の確認は 「アカウント」から入ってみるのがどうにも解せない。今まではヘルプ、だったと思う。)

なぜか当方の環境 15.0.4675.1003 のほうが公式アナウンス 15.0.4675.1002 より新しいのだがなぜだ・・・(MSOの右のバージョンの数値は あっているのでこちらなんだろうな、MSよ、ここも不具合じゃないか?)

Office 2013 または Office 365 の更新プログラム

2015-01-26_232536.png

2015-01-26_232643.png

以上、メモ。

ちなみに以下の不具合はいまだに2013でも発生。
Excelのひどいバグに悩まされた一日(Excel 2003,2010,2013 いずれも不具合あり)Ctrl+D, FillDown にまつわるバグ的挙動: NN Space BLOG-NN空間ブログ

2014年12月18日

SQL Server2008 R2のディスクの使用量の円グラフの色が意味不明な順に割り当てられていて、とても誤解を生みやすい

sql2008-2014-12-18_092429.png

2014-12-17_183057.png

ここから表示する以下のディスク使用量の円グラフについて

トランザクションログを切り捨てる前と後の比較の図になります。
右側の円グラフで表示される水色の部分の示す意味が逆転していますよね?

used-green-2014-12-17_133651.png
上は、トランザクションログがいっぱいの状態です。
[緑=使用済み」

下は、データベースのバックアップを取ってトランザクションログを切り捨てた状態です。
「緑=未使用」
used-blue-2014-12-17_135131.png

なぜ同じ意味に 同じ色で示さないのでしょう?わけが分からない。
左の円グラフも色の示す意味が異なるのがさらに意味不明です:
「緑=未割り当て」。

混乱する。。。[色さえ違えば問題ないだろ?的な発想」はひどい、ちゃんとユーザビリティテストをしたのか?。



2014年12月13日

RelaxTools、進化を続けているね〜

ファイルの一覧からファイルをコピーする | RelaxTools Addin for Excel 2007/2010/2013

自分の知る限りではこの機能を使えたのは ClipboardProcessor くらい。
YGGDRASILL SOFT - Software download
このコマンドで実行
ファイル取得コマンド
コピーしたファイル名(絶対パス)をファイルのコピーに変換
CTRL + ALT + G


窓の杜 - 【NEWS】クリップボード内のテキストをファイル保存できる「ClipboardProcessor」

自分も実装して見たい機能と思っている。

関係ないけど、エクスプローラーでファイルを選択⇒右クリックの送る
だと、ファイル数に制限があるから、[選択したファイルが何か」を検出するAPIがないか探しているんだけどよく分からないまま。

2014年12月06日

VBAのString関数でハマった : String(1,vbNewLine ) で何を得られる?

Office TANAKA - Excel VBA関数[String関数]
構文
String(num,character)
引数numには、文字をいくつ並べるかを指定します。
引数characterには、並べる文字を示す文字コード、または文字を指定します。

解説
引数characterで指定した文字コードに該当する文字、または引数characterで指定した文字列の先頭文字を、引数numで指定した回数並べた文字列を返します。


解説のとおりなんですが、

String(3,"あ" )
-> あああ

じゃあ
String(3, vbNewline ) は?
vbNewline & vbNewline & vbNewline と等価な文字列(改行3つ)が得られますか?
いいえ、答えは
vbCr & vbCr & vbCr と等価な文字列です。

これも解説のとおりなんですが
vbNewline の実体は vbCrLfに 等価です。 (日本語環境の一般的なWindowsでは)。
これはさらに vbCr & vbLf と等価です。

ここまで分解すると説明のとおり、 vbCr & vbLf という2つの文字をつなげた文字列の先頭文字を3回繰り返したものが得られたというわけです。

以下の事実は、知っていても忘れてしまうのでメモ(VBA環境)
LEN("A") = 1
LENB("A") = 2 // 1じゃないかって? VBAは UNICODEですからこれが正解
LEN("あ") = 1
LENB("あ") = 2
LEN(vbNewline) = 2
LENB(vbNewline) = 4

2014年11月18日

Visual Studio 2013でのOfficeアドイン開発

Download the Microsoft Web Platform

【Excel改造】Visual Studio 2013でのOfficeアドイン開発【準備編】 | Developers.IO

Microsoft Office Developer Tools for Visual Studio 2013 が利用可能。

ITpro編集長日記 - 怖いオープンなマイクロソフト:ITpro

2014-11-18_212929.png
↑なんだか余計なものがいっぱい導入された。

2014-11-18_213004.png
↑アドインテンプレートは一番下だった。

2014-11-18_213443.png
↑当方環境では オフィス2013のみインストールしていましたが、アドインテンプレートは2010も見つかりました。

間違いなくVisual Studio Community 2013 はPro相当だ

Visual Studio Community 2013 続き(クリレポ導入): NN Space BLOG-NN空間ブログ

これが無料なんて、信じられんが本当のことだと思ってありがたく使うしかない。

2014年11月15日

VS2013 のPRO相当が無償で個人利用可能になったそうなのでインストールしてみた

Free Dev Offers

Microsoft、“Professional”相当の無償版「Visual Studio Community 2013」を公開 - 窓の杜

vs2013update4-2014-11-15_035053.png

会社でもVS2013 PROを使っているから、自宅でも使えると便利。しっかし、Amazon涙目じゃなかろうか。もう売れないでしょうほとんどがPROで間に合うだろうから。

インストール後、再起動したら
VmWare-Player が起動できなくなっていた。
Hyper-V2014-11-15_042523.png

どうも、「全部入り」で導入したために Hyper-Vが有効化され、それと共存できないようです。orz...

Windowsスマートチューニング (301) Win 7/8/8.1編: Hyper-VとVMwareを共存させる | マイナビニュース
そこでこういったカスタマイズが必要になるようです。

こちらの スクリプトを使用してHyper-Vを無効にして再起動したところ、VmwarePlayerが起動でき、VisualStuioも(HyperVなしで)利用可能になりました。
2014-11-15_045036.png

でも、このままだと英語版です。
日本語言語パックを入れればいいのですが、多少問題がありました。
「Visual Studio 2013 Community Edition」が無償提供! | アイビースター
こちらを参考に、WindowsUpdateを済ませ、再度言語パックの導入。

こちらの記事も参考にさせていただきました:
Visual Studio の全機能を無料で使える Visual Studio Community 2013 を早速インストールしてみた: ある SE のつぶやき

言語パックを導入したら:
Visual Studio を起動して、TOOLS >> Options >> Environment >> International Settings で、Language を「日本語」に設定


jpn2014-11-15_052453.png

Visual Studio Community 2013の日本語紹介ページに重大な記述漏れ - はつねの日記

セットアッププロジェクトについてはこちらを参考にする予定なのでリンクを貼っておきます。
Visual Studio Community 2013をインストールしてみた〜セットアッププロジェクトが無い!! | 吟遊詩人の戯言

あと気になった記事:
C# の IndexOf における長音符と「ゝ」について - Qiita
2009-11-11 - 当面C#と.NETな記録

2014年11月14日

EPPlus4.0がようやくRC版に

EPPlus-Create advanced Excel spreadsheets on the server - Download: EPPlus 4.0 RC

機能出たてほやほやでしたので、今までのベータ版から切り替えてみました。

感想は、、、、あともうちょっと!(デグレードあり)

デグレードしたところが重大な問題があるので、本番運用で回避できない限りは使えません。
昨日から一日調べていましたが回避策今のところなし。

2014年11月08日

DB2 -tvf でスクリプトファイル読ませて、ユーザー定義関数作っていたんだけど、セミコロンが邪魔して関数を作れなかった。

IF ~ THEN
RETURN X;
END IF;
とかのブロック記述がどうしても出来なくて、仕方ないからすべてをCASE 文で実装していたんだけども、どうやらショートサーキットじゃないみたいで(DB2は)、パフォーマンスの問題が出てきてしまったので、何が何でもブロック構文で書き直したくて 一日悩んでいたがようやく分かった。

DB2 -tvf だと セミコロンで終了してしまうのだ。

だから DB2 -td%% -vf として、セミコロンで終わらないように、そして%を記述したときに終わるように指定してあげる必要があった。
さて、定義は出来るようになったのだが、この定義がDB2からどのようにスクリプトにエクスポートされるかが気になった。

つまりDB2LOOKである。これで、DB2に登録したユーザー定義関数を出力してみた。
その結果 最初に書いたような形の関数は
IF ~ THEN
RETURN X;--
END IF;--
と、行コメントのダブルハイフンがセミコロンの後ろについていた。何これ、自分はこんな風に書いていないぞ、てことはつまり、、、、
というわけでこれを逆輸入し DB2 -tvf オプションに戻してそんな感じで 関数を記述したところ見事にそのままで 通るようになった。

見た目はいまいちだし、タイプ量が増えるからあんまり良くないけど、ほかの記述と共存できるからこれで良いなと思った。

ほんと、DB2(IBM)製品の エラーメッセージって分かりにくい。
えらーメッセージを見てもどのようにプログラムを直すべきかはほとんど分からない。

今日の ノウハウ
;--

2014年10月09日

eclipse ショートカット

新人研修でドヤ顔で披露したらウケたEclipseのショートカット集 - Qiita

最近VisualStudioよりEclipseを良く使うのでメモ。

Eclipseでよく使うのは 「CTRL + 関数名のクリック」で 関数の定義へジャンプ。
そこからの Alt + ← で、元居たところへ戻る。
これを使えばドンだけ深い階層へジャンプしてもどんどん戻れる。

2014年08月05日

Visual Studio 2013 Update 3

Visual Studio 2013 Update 3 の ASP.NET 周りの変更まとめ - きよくらの備忘録

Visual Studio 2013 Update 3 (2013.3) RTM - August 4

Visual Studio 2013 Update 3 RTM Available - The Visual Studio Blog - Site Home - MSDN Blogs

開発環境の更新。
明日は開発中断して、アップデートで一日終わるかな…

2014年07月09日

Cent OS 7

「CentOS 7」公開、コンテナ型仮想化をサポート、標準ファイルシステム変更 - クラウド Watch

うちのVPSもそのうちバージョンアップしよう。

2014年07月06日

文字コード:全角チルダー問題 ~ 〜

全角チルダ問題

〜 と 〜 の違い。(そのまま文字を貼り付けています)
フォント(のサイズ)によっては本当に見分けがつかない。

↑ブログの記事としてはきちんと文字コードを保存しているようですが、ブラウザで見るとアウト(どちらも同じコードになっている)です。

ユニコードタグ(ユニコードタグのすすめ)で 書き直したものがこちら

~ と 〜

UTF16 の 16進数では FF5E と 301C

以上。

ここで気がついたのは、Firefoxの[選択範囲のソースコード表示」は 本当のソースコードを表示していない!

次回に続く。


2014年06月13日

Excelのファイル名の扱いがひどい

ファイル名の括弧 [ ] が エクセルのワークブック名としては ( ) として扱われているようです。

たとえば
h[ogef]uga.xlsx というファイルをエクセルで開くと
ワークブック名は
h(ogef)uga.xlsx となります。

以下の画像は、Excelの開発者の中の人もやってしまった、ワークブック名をファイル名として出してしまったケース。(間違い)
2014-06-13_231658.png

そのため VBAの処理プログラムで ActiveWorkbook.Name が ファイル名だと思って油断して扱っていると痛い目にあう。

エクセルファイルへのフルパス ≠ Activeworkboo.Path & "\" & ActiveworkBook.name なのだ。
フルパスとしての情報は別途 ActiveWorkbook.FullName プロパティを参照すると得られる。

なので、本当にファイル名をほしい時には .FullName からファイル名部分だけ 切り出し手使う必要がある。ただしそのファイル名は Workbook を識別するための名称としては使えない場合がある。

つまり、自分の開発するVBAロジック中での目的が ワークブックを識別したいのか、ファイル名が欲しいのかで この2つは別々に取り扱う必要があるのだ。

ああ、面倒くさい。

タグ:ひどい

2014年05月13日

Visual Studio 2013 Update 2 出た?

「Visual Studio 2013 Update 2」リリース iOSやAndroidアプリ開発ツールキットをサポート - ITmedia ニュース

そのUpdateファイルがほしいんだけど、フル版しか見つからないぞ。(昼間会社にて 半日ぐぐった結果)

Microsoft、「Visual Studio 2013 Update 2」を正式公開 - 窓の杜

今朝方いち早くこの情報をキャッチし、Update2のリンクを探したんだけどみつからず。

自宅でこの記事を書きつつ探したら、あった:
Download Microsoft Visual Studio 2013 Update 2 from Official Microsoft Download Center

VS2013.1だと、ハードウェアレンダリングのままではIDEの見た目が黒いところがあったりして微妙だったけど治っているかな?
タグ:VS 2013.2

2014年04月22日

いわゆる全角文字判定するときは、いったんCP932に落とし込んでから判定するようにするのがいいと思っています

文字コード地獄秘話 第1話:Unicodeにおける全角・半角 - ALBERT Engineering Blog

全角文字を分断するときの挙動が変わってた・・・: NN Space BLOG-NN空間ブログ

いったん別のコードページに変換するとパフォーマンスは落ちてしまうけど、たいした差にはならないしね。


話は変わって:
株式会社トライテック:コラム: オーディオ・トランスの話
ここの記事を見てなんとなく トランスの 帯磁消去の 音源を作ってみました。
1000LR-1001LR-Sweep-3to-140db.WAV
↑最初は大きな音が出るので注意してください。

設定はこんな感じ:
2014-04-22_022746.png

さて、音は改善したのかと言うと、・・・・自分の聞こえ方がころころ変わるのでわかりませんでした。


あと、タイトルにつられてリンクしているけど記事は読んでません↓
日本人は『ドラクエ』から色んなこと学びすぎだろ!

「みんなの困った…」をゲーム感覚のクエストに変換できる、新潟発のアプリ「まちかどギルド」が話題に! | APPGIGA!!(アプギガ)



「ぺるけ」さんのUSB−DAC使用トランス抜粋 : Zen Cart [日本語版] : The Art of E-commerce
TK-20が 9,950円 に値上げだとっ!!!!
Primary/600Ω CT
Secondary/10KΩ
周波数特性/20~20kHz(±0.5dB)
最大使用レベル/10dBm
概略寸法33.5x22x41.5+6.5
1個からでもお求めになれます


以前のお値段いくらだったっけ?確か8千円台
単純に3%差額戻しただけでは8000円台にならないし。。値上がりしているよね orz

2014年04月06日

C#だけをネイティブコードに変換できるとかもったいない。なぜ.net 全般をサポートしないのか

Microsoft、C#コードをネイティブコードにコンパイルする「.NET Native」を発表 | スラッシュドット・ジャパン デベロッパー

MSIL からならどの言語も.net 基盤共通でNative Codeにコンパイルできるはずなのだが。

excel2013の起動時マクロ読み込み時に生成した右クリック(コマンド)メニューを書き換えようとすると初回は失敗してしまう件の解決(!?)⇒ 完全解決せず!!

日本語環境で作ったエクセルマクロを英語環境で動かすには?: NN Space BLOG-NN空間ブログ

こちらの記事の最後に言及していた、標記の件ですが、物は試しに(何を?)と、
マルチスレッド処理のオプションをOFFにしてみたところ、見事に解決しました
やっぱり無理でした。一度うまくいった気がしたのは本当に気のせいだったのかも。

2014-04-06_092145.png

しかもこのオプション、きちんとマクロからON/OFFできるようです。

・ONに戻すときの設定コード
Application.MultiThreadedCalculation.ThreadMode = xlThreadModeAutomatic

と言うことは、マクロのメニューを追加するときには Offにして、マクロを追加し終わったらONに戻せば万事解決、となりそうです(未テスト)。
⇒ しっかりテストしたらやっぱり駄目でした。

⇒で、よくよく うまくいっていたと思われるマクロの状態を見比べてみたら、そのマクロはワークシートが表示される設定になっていた。いつもの自動起動マクロはシートが非表示。
この違いだけで、メニューの項目表示の書き換え成功・不成功が変わるようだ。
じゃあ、なんだか気持ち悪いけど、マクロの起動時だけ ワークシートを表示するようにすれば解決するのか??

⇒と思って、起動時だけマクロのシートをVisibleに設定してみたけど、解決せず。
しかも興味深い事実が判明。

自動起動フォルダーに入れたマクロは、以下のスプラッシュ画面と、初期画面の間に読み込まれることがわかった。
マクロのシートが表示されるようになっていると、こちらの2つの画面の間でシートが見えた状態で一時停止していたことが視認できたのだ。

2014-04-06_103455.png
↑ここと↓の間で、自動起動マクロが開かれている。
2014-04-06_103539.png
最初から自動起動マクロのシートが非表示だと↑の初期メニューは出てこない。

やっぱり不思議なのは、マクロのシートを表示させっぱなしだとOKなのにそうじゃないとNGって言う点。

2014年04月05日

日本語環境で作ったエクセルマクロを英語環境で動かすには?

日本語環境では動いていた(Excel VBA)のマクロが英語環境のPCではエラーになってしまって動かないってことがありまして、動くようになるまでに必要なことをここに書いておきます。

簡単に言うと、
・モジュール名
・メソッド
・プロパティ
・関数
・フィールド
などの名称では日本語(マルチバイト文字、半角英数文字以外)を一切使用しないこと。

これには、実際に呼び出されることの無いテストコードのメソッドのようなものも全部含みます。

逆に日本語を使用しても動くケースがあります。
'コメント の記述は日本語で書いてもOKです。ただし英語環境では文字化けするかもしれませんが。

同様に、関数の戻り値とかフィールドの値の設定は日本語を使用しても大丈夫です。
ただし英語環境では文字化けするかもしれませんが。

基本的には日本語を使わないことによって簡単に英語環境で動くはずです。

しかしながら、日系企業で英語版 MS Officeを使用している人向けにも動かしたい場合などは日本語も使用したマクロになり、日本語の表示もきちんとされてなおかつ英語環境でも動作するマクロが最適解になります。
この場合は、[地域と言語/Region and Language]の設定から[管理/Administrative]タブを開いて
「UNICODE対応ではないプログラムの言語 / Language for non-Unicode Programs」から[システムロケーるの変更 / Change System Locale...」を行い
日本語(Japanese) を選んでPCを再起動すればOKです。

この場合でも、関数名などに日本語を使うのはご法度です。しかしながら値の設定の日本語はOKできちんと表示されるようになります。

この結論にたどり着くまでにいくつかの環境のPCを見たりいじったりしましたが、結構時間が掛かりました。
なんせ英語環境で出るエラーメッセージが、[マクロが有効になっていません(英語で)」とか「Module Not Found」とか なので。(後者のメッセージからは日本語を使用したモジュールが読み取れないことを深読みすることがもっと早くにできたのかもしれませんが)。

後、このエラーが出るのは日本語ランゲージパックの入っていない純粋な英語版PCです。
多言語がインストールできるEnterprise・Ultimate版のPCだとたとえ英語版を使っていても日本語環境で作ったマクロが何の問題も無く動きました。この環境があったせいで何が原因なのかを切り分けることが逆に難しかったです。

しかしながら英語版対応を施してもなお、Excel2013ではスタートアップコードでコンテキストメニューの追加を行った場合、ダイナミックにメニューを変更するコードは起動ごとに最初の一度は必ず失敗するようです。これも不思議なのですが、スタートアップコードを中止して、エクセルが起動(マクロがロード完了)した後に、メニューを追加するとダイナミックなメニューの変更で失敗することがなくなるんですね。Excel2013でしかこの不可思議な現象が起きないということと、今のメインのオフィスは2010なのでこの問題はしばらくこのまま放置しておけばいずれ修正されるのではないかと思い、それほど深追いしていません。

2014年03月22日

Officeドキュメントのプレビュー画像を取得するライブラリーを探してます

アプリ開発の必須用件にはならないと思うけど、ファイルのプレビューがあるのと無いのとではやはり使うほうにとっては雲泥の差だろう。

どうにかして、.net のプログラムに組み込みたいのだけど。

いまいちの結果になるやり方しか見つからない。

2014年03月05日

NPOIもEPPLUSもClosedXMLもなんかいまいち。

Excelの2007以降の xlsx 形式をいじれる .net 対応ツールを探しています。

もうすでにプロジェクトは始まっているのだけれど、事前に タイトルのライブラリなら何とかなるんじゃ?とろくに調べてもいなかった。
でも実際にプロジェクト用のファイルを変換してみたら、デザインの壊れること半端ない。
でもいまさら有料のライブラリーを買う予算も無いし。さて、どうやって乗り切るか。

NPOI - Home は、なんとなく JavaのPOIがいけてないので最初から嫌悪感。
評価できるのは .net 2.0 でも使えるライブラリがあること。それ以外は3.5以上とか制限がある。

まあ自分のところは FW4.0以上でいいから、選択肢としてはどれでもいける。

個人的には EPPlus-Create advanced Excel 2007 spreadsheets on the server - Home が感覚的にも一番しっくり来るし、処理スピードもなかなかのもの。
だけど、xlsxファイルをテンプレートにして、1セルに値を書き込むだけなのに、ほかのシートの書式が無くなったり、標準書式のセルがパーセンテージ(%-Percentage)に全部置き換わっていたりということが発覚して、ちょっと萎えた。

そこで書式を壊さないライブラリって無いものか?と探してみたところClosedXML - The easy way to OpenXML - Home を見つけた。
これ、Microsoftの OPEN XML DocumentFormat.OpenXml.dll のラッパーということで、マイクロソフト製のライブラリを使っているなら大丈夫だろうと期待したのだけど
これもぜんぜん駄目。結局書式が無くなったりする。EPPLUSとは違うところが。

後者2つの評価としては、テンプレートエクセルの書式が再保存後も維持されるかどうか、回避策は無いか?という観点で見ると EPPLUSのほうが いい。
完璧じゃないけど、テンプレートファイルの書式を明示的に設定しておくとか、セルの高さを明示しておくとかすれば再保存後も書式は維持されているっぽい。

NPOIは実はまだそういった評価をしていなかった。明日確認してみよう。


アドオンとかプラグインとか拡張機能とか - hogehoge @teramako

20140305_222014 後日NPOIを同じ条件で検証してみましたが、テンプレートファイルの書式をことごとく壊しまくりで、使う気に慣れませんでした。
さらにはやっぱりNPOIのコーディングスタイルは馴染めないので ものすごくストレス。
ClosedXMLかEPPLUSが お勧めです。

2014年02月17日

Unicode(UTF16 BOMなし)って嫌われてるよね

そもそもUNICODE(UTF-16)はExcelのテキストデータインポートの設定にも現れてこない。最新のExcel2013でも然り。

ほとんどのエディタで自動認識できない、UTF-16 のBOMなし。

エクセルでCSVで開いてやっても変なことを効かれる。
2014-02-17_230626.png

2014-02-17_230708.png


同じBOMなしのでも UTF-8だと大概認識してくれる。この差はナンなんだ?

UTF-8はASCIIを自然に拡張できるから アルファベット圏のやつらには便利なんだろうけど。
そして日本人は CP932(SHIFT-JIS)があって、全角、半角でよろしくやっているからUNICODEは正直不要だし。

Excelのテキストインポートには UNICOCDE(UTF-16)がどこにもないし。
2014-02-17_231229.png


水曜から木曜 関東の雪の見通しは(日直予報士) - 日本気象協会 tenki.jp

2014年01月29日

エクセルの便利アドイン

RelaxTools Addin for Excel 2007/2010/2013 | Excel に各種変換、編集、検索などの機能追加を行うツールです。

自分もエクセルのマクロを開発しているのですが、方向性が似通っている部分があり、しかもたったの5年でここまで作りこんでしまうのかと感動。
自分はそれ以上の年月をかけているのにぜんぜん追いつけていない。

RelaxTools を使ってみて一番自分も真似して実装したいと思ったのが「やり直しが効く」セルの編集方法。
自分のマクロだとセル変換系のマクロはやり直しができなくて、それは仕様と割り切って作っていたのですが、RelaxTools はやり直しができるのです。
何でだ!
2012/03/25(Sun) Version 1.00(SpringRoll)
・「Undo機能」の追加。

と書いてあるので自前で実装したんだろうなー。面倒くさいと思うのによく実装したと思う。

もしかするとそのツールは Excel 2007/2010/2013 Ribbon対応版 としているから、何かやり方があるのかもしれない。

自分のマクロは一応2003(2000でもまあまあ)で動くように xls で作っているから、と一応悔し紛れに書いておく。


もう一言 独り言だけ書いておくと RelaxTools のアドインを VBA Code Decompiler にかけるとファイルサイズが4割近く小さくなりますよ!、と。
vba2014-01-29_235847.png
↑ちょうど自分もこのぐらいのBefore/Afterのマクロファイルのサイズなのだ。だけど、自分のマクロブックはxls だからxlsbにするともっと縮小できる(ZIP圧縮されるからさらに小さくできる)と思うけども。
ちなみにDecompilerは以下のものを愛用しています。
VBA Code Decompiler and Compactor
ファイルにパスワードが掛かっていても解除せずにDecompileしてくれる優れものです。


彼(彼女)のマクロも 「自分が必要だと思った機能をどんどん追加していったらこうなった」的な感じがして何か同類のような親近感がある。しかしまあ見事にかゆいところに手が届くツールになっているし、すごい。

自分のマクロとこのツールは共存ができるので併用することにします。


2013年12月18日

今年の3月にはDecompileして900KB程度だったExcelのマクロブックが今はおんなじことしても1200KB以下にならない。

ACCESS以外のVBAファイル(*.xls, *.doc, *.ppt, もちろん *.mdb も)をデコンパイル(DECOMPILE) できるツールをようやく発見! Decompiles and Compacts: VBADecompiler !: NN Space BLOG-NN空間ブログ

あれからそれほどロジックを追加した覚えはないのだが、デコンパイルにも限界があるのだろうか。
なお、デコンパイルしないと 1700KBあるので、デコンパイルの効果は30%ほど、きちんと効果はある。

なおマクロのブックの拡張子はXLS。 XLSXだとコードも圧縮されるので400KB程度になっちゃうけど本質は変わらないでしょう。

聞いた話だけど、XLSのマクロのエンジンと(Ver2003まで)、XML形式のXLSBのマクロのエンジン(Ver2007から)はマクロエンジンが違うとか。本当ですかね?
Office TANAKA - VBAユーザーのためのVB 2005/2008入門
ここを見ると Excel2007でも VB6.0エンジン相当とのことなので、ファイルフォーマットの違いでマクロの動作プラットフォームが変わるとは思えないのだが。


Inspiron 15z Ultrabookトレードマーク(TM)の詳細 | Dell 日本
このノートPCいいなぁ。

2013年11月06日

Ms Accessで外部DBアクセス処理をがりがり書いている人は知っておくべき内容がたくさん

psqlODBC+DAOでPostgreSQLに接続する
PostgreSQL に限らない コーディングノウハウが結構ある。

パススルークエリ

リンクテーブルではダメなのか

MS ACCESSからPostgreSQLへ移行する

Access MDBを多種な外部DBのハブにして、プログラムからの データソース参照をMDBに集約するのが最近の自分の開発でよくやる。
こうすると、エンドユーザーさんでAccessをいじれる人だといろいろ自由にカスタマイズしてくれる。


2013年10月12日

もうそろそろかなって思って、SAP クリレポのサイトを見たら、ジャスト数日前の更新だった。自分の直観に驚きを隠せない。

SAP Crystal Reports, developer version for Microsoft Visual Studio
↑最新チェック!Don Williams により 2013/10/10 19:09 に変更されました。 とのこと。更新日自体は頻繁に変わっているようなので、直観あたってないかもしれない。


↓前回
Visual Studio 2012 と .NET Framework runtime 4.5 に対応した CrystalReports モジュール CRforVS_13_0_5 が出てたー: NN Space BLOG-NN空間ブログ

v. 13.0.6 から、WebXmlDeployment というモジュールが増えているね。これは何だろう。Web経由のインストールをするものか?


意外と少ないHELPですが、ZIPでダウンロードできます。CHM形式です。WEBで断片情報を探すよりも、こういった網羅情報を片っ端から探したほうが早いこともあります。
SAP Crystal Reports .NET API Guide

SAP Crystal Reports .NET SDK Developer Guide



PDF出力した時と、ReportViewerで見た時とで、数値の桁ぞろえが変わってしまう不具合はさて、治っているのだろうか。


2013年08月06日

VBコンパイラなどが無償提供

MicrosoftのC#とVBコンパイラが無償提供へ

メモ。

2013年06月27日

SAP N/W AS を インストール(2回目(よりも多め))

SAP NetWeaver ABAP Trial版をダウンロード: NN Space BLOG-NN空間ブログ

初回は失敗に終わったので、2度、3度とチャレンジしたが。Windows8にはなかなか入らない。

ということで、推奨の2008Serverを今から準備してインストールすることにする。

手元にあるTechnetの 2008R2 を VMware Playerにセットして自動インストールで待つこと10分。
ログイン画面まであっという間。(だけどここからが長い、Windows Update/////)

ここで先日の同じセットアップ手順をなぞってみると、PC名の長さが引っかかった。
13文字以上あるとアウト!らしい。
自動インストールでは 13文字以上だったので、短めにやり直して再度インストール。

裏でWindowsUpだてしながら、SAPのインストールを進めていると、msiexec が実行中だから何とかという英語のエラーがしょっちゅう出て進まない。

おそらく、インストールが競合しないような配慮なのだろう。だけど、勝手に終わることはなく、OKを押すとしょっちゅう警告が出る。
で、意図的にSapInstを停止し。アップデートのほうを完了させて再起動後にもう一度SapInstを試みると今度はスムーズだ。

r2-2013-06-26_224413.png

r22013-06-26_231829.png

r22013-06-27_002718.png

r22013-06-27_003427.png

r22013-06-27_003452.png

r22013-06-27_003511.png

ABAPのインストールからが長そう・・・・寝よう。
r22013-06-27_011548.png

2008R2の環境ももしかするともう一回入れなおす可能性があるので、寝る前に
A.K Office > ソフトウェア > SP+メーカー
を使って、HOTFIX適用ISOイメージパックを作ったら1000MB超えた。


… …
いつの間にか終わっていた。
r2fin2013-06-27_062123.png

2013年06月25日

SAP NetWeaver ABAP Trial版をダウンロード

まず、SCNのIDを取得する必要があります。取得がすんだら以下のページを参照。

[SAP] ABAP 開発環境をインストールする Part1 | すなのかたまり
[SAP] ABAP 開発環境をインストールする Part2 | すなのかたまり


概要およびインストール要件を把握したら以下のサイトにログオンしてダウンロード
SAP NetWeaver Main Release Downloads

sapscn2013-06-25_222350.png
こんな感じでDL.

サイズは大きいです。

ちょっと節操ないなと思ったのが、それぞれの圧縮形式がZIPだったりRARだったりと不統一なところ。
rarzip2013-06-25_222739.png

インストーるを試みたPCは
・Windows8 Pro 64Bit
・メモリ8GB
・Cドライブ飽き30GB、Dドライブ空き 400GB

NWABAPTRIAL70304_64.rar を解凍したら、
"\NWABAPTRIAL70304_64\start.htm" の、Installation の項目ステップをよく読んでインストールします。
特に躓いたのは
4.Choose "SAP Application Server ABAP" --> MaxDB --> Central System --> "Central System".
のステップで、項目をダブルクリックしないといけなかったという所でしょうか。

その後は、ログオフが要求されるので、あらかじめすべてのアプリを終了させておくことをオススメします。
再ログインするとインストールが自動継続します。

・OSが2003/2008 Server じゃない
ということと、
・ページファイルが20GB確保されていない
ということが理由で インストールを続行できない画面に遭遇。
notmeet2013-06-25_225432.png

そんなことは承知で強制的に進める。

しばらく反応がなかったけども、無事に進んだ。

SAP SID,DB SID は NSP (このサイトがNNSPACE ということによって設定されたとかそういうこととは何ら関係はないと信じていますが)
セントラルインスタンス番号は00
その他諸々は OSとは別のドライブ D:にインストールされるようだ。私の場合。

exec2013-06-25_232009.png
ここからが、長い。
長い理由は、インストーラをNASに置いたことと、インストール先がSSDじゃなくて HDD ということかと。

err2013-06-25_234145.png

結局エラーになってしまったので今日はここまで。

2013年06月20日

CrystalReports for VisualStudio 2010のランタイム環境で作成したアセンブリで、2008のランタイム環境で動かす。

CrystalReports for VisualStudio 2010と
CrystalReports for VisualStudio 2008では、レポートエンジンの解釈が若干異なっているようで、同じ*.rpt ファイルを読み込ませても出力される帳票のレイアウトが異なることがある。

で、元をたどれば CrystalReports for VisualStudio 2003の頃から、徐々にアップグレードしてそれぞれの環境での クリレポを バージョンを合わせてランタイムをクライアントに導入してきていたのだが、今回に限っては レイアウトずれが甚だしく。

クライアントには 2008 で作ったセットアップモジュールを配布してつかってもらっているのだが、もう私の手元は基本的には VS2010しかないのである。となるといずれは VS2010できちんとレイアウトを合わせてセットアップモジュールを作成し、配布としたいところだがそんな時間もない。

そこで、最近私は アセンブリの動的ロードを良く行うのでふとひらめいた。
VS2010でビルドしているが、CrystalReports for VisualStudio 2008の アセンブリを読み込んでやれば 2008のレポートエンジンで動かせるんじゃね??と。

コレは最終的には実現ができた。だがそうするためには CrystalReportViewerの いくつかのプロパティにおいて すでに VS2010専用メソッドで呼び出していたものをリフレクションに書き換えたり、クリレポのバージョンを判定してメソッドの呼び出しを変えるなどの小細工が必要だった。

つまり、開発時には VisualStudio 2010 とCrystalReports for VisualStudio 2010 のランタイム環境で開発しつつ、クライアントに配るときには 任意で
レポートエンジンのランタイムを
CrystalReports for VisualStudio 2008
もしくは
CrystalReports for VisualStudio 2010
のどちらかで動かすことをある程度コントロールできるように共通ライブラリーを作った。

実行環境にランタイムを両方同居させると CrystalReports for VisualStudio 2010 (要は新しい方、開発時の参照ランタイムの方)で動いてしまうが、どちらか一方を入れておけば それで動く。

だから、いずれレポートのレイアウトずれを直したら エンドユーザーに CrystalReports for VisualStudio 2010 を入れてもらうだけでよさそう。

2013年05月22日

Fiddler (フィドラ−)はすごいと思う

Fiddler - The Free Web Debugging Proxy by Telerik

実はFiddlerがすごすぎたので、機能まとめ紹介 - digital matter

Amazon.co.jp: 実践 Fiddler: Eric Lawrence, 日本マイクロソフト株式会社 エバンジェリスト 物江 修 (監訳), 長尾 高弘: 本



適当に使うだけでもすごいツールだというのはわかったので、こういうガイドブックを見るとものすごい使い方が身につきそうだ。

[SQL初級] - SQLer 生島勘富 の日記

プログラマーは皆、常に秘密や嘘を抱えている - totopon114689の日記

2013年05月21日

EPPlus っていう Excel ファイル作成ライブラリ(.net版)がよさそう

EPPlus-Create advanced Excel 2007 spreadsheets on the server - Home

Javaには POI というモノがあり、
POIを活用してExcelから帳票を作成 (1/3):CodeZine

その .net版の NPOI
NPOIでExcelの生成に挑戦してみる - SSK
というモノの存在も数年前から知っていましたが、プログラムサンプルをちょっと覗いて「コレは取っつきにくそうだ」と敬遠していました。


それで久しぶりに、Excel操作ライブラリーを探してみたところ EEPlus というモノを発見。

サーバーサイドでEXCELを読み込む(NPOI、EPPlus) - 弘法にも筆の誤り

サーバー側でExcelを作ってみる(EPPlusで) | 84zume Works

公式サイトからダウンロードしたサンプルプログラムを動かしてできあがったファイルを見ても、十分な、期待以上のモノがあった。特に sample15-3.xlsm のマクロのゲームはおもしろい。

ただし、
NPOIは*.xlsはOKだけど、*.xlsxは読み込めない。
EPPlusは*.xlsxはOKだけど、*.xlsは読み込めない。

互換パックがあれば xlsx は 2003でも読めるし、良いか。
問題があるとすれば、xls を EEPlusで読み込む場合かな。 いずれ対策を考えよう。

2013年05月03日

Windows BAT開発の基本作法がよくまとまっているサイト

開発に役立つ,BATファイルの書き方・パターン集 (コマンドプロンプトの定石を体系的に学び,バッチ中級者になろう) - 主に言語とシステム開発に関して

無駄なく、一通りのことが理由とともに解説されている。

上記のサイトから更にリンクをたどって興味あるところを抜き出してみる。

抜き出し@
・このフォルダにある全テキストファイルを一斉に開く
for %V in ( *.txt ) do %V
非常にシンプルにForの構文を理解できる。だけど、ファイル名にスペースがあると開けないので
for %V in ( *.txt ) do "%~V"
とかにするのが良いかな。(複雑になっちゃうな)

以下のコマンドも活用したい
for %i in (1,2,3) do ping 192.168.0.%i


独り言@
リンク先とか確認せずに、どこにも書いてないからというのも乱暴だけど、空のファイルが必要な場合作成する必要は無く、nul が 空のファイルの代わりをする。
type nul > zero.txt
とかして 空のファイルを作る必要はそもそも無い。
nul が 空のファイルと同じだ。
※ 余談 ※ SAP GUI で CG3Zによるファイルのアップロードをするときに、0バイトファイルをアップロードしてサーバー側のファイルを消す(とりあえずサイズを減らすためにする)という事がありますが、アップロード元のファイル名に nul と指定すれば 用が足ります。わざわざ ZERO_BYTE.txt とか作成する必要は全くない。


意見@
sort コマンドを例にして、一時ファイル作成の説明をしているが、WindowsXPとか7で確認した限り、並べ替え対象ファイルと同じファイル名をソート後の書き込みファイル名にしても問題ない。
つまり
SORT TARGET.txt /O TARGET.txt
とすれば一時ファイルを気にする必要は無い。この場合、コマンドが成功すると元のファイルはどこにも無くなってしまうけどね。

抜き出しA
copy con temp.txt で標準入力からテキストファイルを作れる(Ctrl+Zで終了)
というのも新鮮。


抜き出しB
SET ERRORLEVEL=数字
としてしまうと環境変数扱いになってしまいプログラムの実行結果が参照できなくなる。
これは ユーザが明示的にERRORLEVELという名前の環境変数を定義したことになるから。


あなたが理解できない,たった一行のRubyのコード (動的言語に対する静的解析の限界) - 主に言語とシステム開発に関して

DBの「トランザクション分離レベル」が必要な理由  (PostgreSQLで,ファントム・リードを防止すべきサンプル事例) - 主に言語とシステム開発に関して

JavaScriptの動かないコード  (JavaScriptエラー集) - 主に言語とシステム開発に関して


バッチで,ODBC接続の設定を追加・更新・表示しよう(odbcconf.exeの使い方:PostgreSQLでの使用例) - 主に言語とシステム開発に関して

コマンドプロンプトから,Win32 APIや任意のDLLを呼び出して実行しよう (コマンドプロンプトから画面キャプチャする方法の仕組みを理解) - 主に言語とシステム開発に関して

Excel VBAのマクロを,複数のブックから利用する方法 (標準モジュールをブックの外部で管理して,共通ライブラリとして読み込み) - 主に言語とシステム開発に関して
↑ExcelVbaのコードを外部のTEXTファイルにして動的ロードするアイデアはおもしろい。

JavaScript をコマンドラインで実行する方法  (mshta.exeの使い方) - 主に言語とシステム開発に関して
↑MSHTAがあれば何でもできそうだ

2013年04月25日

[ソースコードが設計書だ」なんて思っていたときがありました。

NTTデータ、既存システムのソースコードをもとに設計書を再生するサービス

IE10 の自動アップグレードが始まります - Internet Explorer ブログ (日本語版) - Site Home - MSDN Blogs

大学1年生のとんでもない勘違い

2013年04月23日

Excel VBAの安定性を高めるために明日試してみようと思うこと

VBA Code Decompiler and Compactor

上記サイトに書いてあることを試してみようと思う。

要約すると
・Workbook_Open() イベントの中にコードを長々と書かない
・代わりに、標準モジュールにコードを書き、Workbook_Open()から呼び出す

・その呼び出し方も Callじゃなくて OnTime を使う方がよい

何ともおまじないのようだが、やってみようと思う。

以下は努力目標かな
・プロジェクトをデコンパイルされた状態に保ち、サイズを小さくする
・参照を避ける
・ early binding を避ける。事前バインドをやめて、遅延バインドにする。特にコレは、要するに「できるだけコンパイルされないようにする」っていうことじゃなかろうか。


WHAT'S NEW


・おすすめ楽天ショップ1:trendyimpact楽天市場店
・おすすめサプリショップ:iHerb.com
・おすすめ楽天ショップ2:上海問屋
Powered by さくらのブログ