エンジニアが発信する【VB/VBA】の記事を集めました

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【VB/VBA】

2010年08月30日

Access漬け

こういうブログを書いておいてナンだが、私はAccess自体あまり好きではない。しかし、ツールの依頼はAccessが多いし、ツールによってはExcelよりAccessの方がコード量を減らせるので、最近重宝している。

Accessで作成されたツールのメンテも受けるが、便利であるがゆえに、ひどいシステムが多い。何もAccessに限ったことではない。ExcelでもVBでもよく見かける。

しばらく放っておいたら鎮火してしまっていたが、やはり「真っ当なプログラミング」を指南する必要性はあり、その情報の発信量が少なすぎる、ということなのだろう。その必要性を改めて痛感した。
今の仕事を利用し、一気に公開する資料の量を増やせないかと考えている。


2010年08月17日

VBAからPowerShellを呼び出す

Windowsのサーバーの管理に、PowerShellが便利らしい。

過去にもくるーずさんのブログでインスパイアされ、いじったことがあったが、今回は折角なのでVBAからの呼び出しをしてみよう、と調べてみた。
どうやらVBAで参照設定をしてPowerShellを呼び出すようなことはできないらしい。ということで、shell関数で呼べばいいや、と試してみた。

もちろん、前提条件がある。
・powershellがインストールされていること
・powershellの実行ファイルにパスが 通っていること

で、

Call Shell("powershell c:/\/itest.ps1" ,vbMinimaizedFocus ) などと書けば動いてくれ、ない。

実はpowershellには安全のため実行モードがある。デフォルトでは外部ファイルを実行することはできない。デジタル署名付きでないとダメとか、モードはいろいろあるが、次のようにしてみた。

Call Shell("powershell Set-ExecutionPolicy RemoteSigned -Force" ,vbMinimaizedFocus ) ' 実行を許可
Call Shell("powershell c:/\/itest.ps1" ,vbMinimaizedFocus ) 'さっきの
Call Shell("powershell Set-ExecutionPolicy Ristricted -Force" ,vbMinimaizedFocus ) ' 再び実行を禁止

さて、実行するが、これもタイミングによっては動かない。なぜなら、Shellで起動するタスクは非同期だから

こういうときは、同期処理にしてしまうのがいい。
参考:http://www.geocities.co.jp/siliconvalley/4805/vbtips/vbtips053.htm


この中の Shell使用 をカスタマイズし、ひとつひとつの処理が順番に流れていくように変更したらバッチリであった。

そのあたりのソースはまた今度。

エンジニアが作る最新ITブログ トップ>エンジニアの発信する【VB/VBA】

メンバー紹介

タグパネル

ランキング

エンジニアが作る最新ITブログ DODA