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

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

2010年08月12日

MDEファイルはコードを隠蔽できる

ExcelでAccessに使える共通関数は作れません。その逆も然り。VSTOとか、Office Developer は除きますが・・。

最近、DLLにしたくないので、ということで、Excel向けの共通関数をAccessへ移植しました。ほぼモジュールをコピーしただけ、です。
AccessはMDE形式で保存することができます。この形式はExcelでいう .xla みたいなもの。だと思っていたらちょっと違いました。VBAをMDEにすると、ソースコードは閲覧できなくなってしまうのです。つまり隠蔽可能、ってことです。

これはこれで面白いので、ドキュメント付きで公開しようかな。
同じテーマの最新記事

2010年08月10日

C#

8月に入って、ちょっとC#を使うことになった。

正直、C#でコードを書いたことない。しかし、指定なのでやむを得ない。練習のためVB、VBA、VB.netで使っていた共通関数を移植してみた。

VBとは使い勝手が異なるが、コンパイラのメッセージや方々に落ちているサンプルプログラムなどを参考にしながら着実にコードを書けるようになってきている。

それをしながら、場合によってはVBAを書いたり、組み合わせたり、サーバー設定をしたりと、面白い。折角なのでC#もしっかりと書けるようになっておこう、と企んでいる。
同じテーマの最新記事

2010年07月26日

VBAユーザーがVB.netに携わるときの注意点

VBが6.0からVB.netになった際に、言語仕様としていくつか変更になっているものがある。VBAは非.net系の言語仕様をそのまま引き継いでおり、.netには移行していないので以前の言語仕様のままである。

※Office 2007/2010 に関しては未確認だが、同様ではないかと思う。

その中で一番注意しておく必要があるのは、おそらく型ではないかと思う。
何かというと、VB.netでの Integer は VBA での Long に相当する、ということだ。これはVB.netのみならず、例えばSQL Server でも同様である。

連携するプログラムを組んでいる人たちなら常識的かも知れないが、念のため。

2010年07月22日

データ型の作成

それほどたいしたものでもないが、VBAでいざ実装しようとするのはちょっと面倒なのがスタックやキュー、連想配列。この辺を共通の型として定義し、利用しやすいようにしてみた。まあ、連想配列は後回しでもいい。

現在実装を終え、簡単なテストを終えたところ。Objectで受けてやろうとも思ったが、とりあえずStringで実装。

たいそうなエラー処理はしていない。公開するにはモノが小さすぎるので、あといくつか処理を追加したら公開してみるか。


すぐ使ってみたい、という方は連絡を頂ければ先行頒布してみようと思う。
同じテーマの最新記事

2010年07月20日

システム開発生産性が高い言語

今から3年ほど前の記事であるが、ITPROのサイトに「システム開発生産性が最も高い言語」という記事があった。
※会員でないと記事は読めないと思うが、リンク

それによると、その結論はExcelだそうである。VBAだけを指すのか、ワークシート関数やらExcel本体でできるものも含めるのか(それをVBAでコントロールするのか、しないのか)という点については言及がなかったので、厳密にどこまでを「開発言語」と言っているのかは分からないが、VBAに関しては間違いなく開発言語と言える。

問題点も同時に指摘されていた。その問題点はこのブログでも何度か挙げたようなことで、至極当たり前のことである。生産性と保守性は必ずしも一致しないのである。

VBAの生産性自体は確かに高いと思う。しかしそれ以上に、言語に触れる敷居が最も低い言語、であると思う。他の言語は開発環境をセットアップする必要性があるが、Excelに関して言えばExcelをインストールすれば概ねOKである。もう少し言えば、ExcelはほとんどのPCに導入されているので、開発環境をセットアップする手間さえ要らない場合が多いからだ。

高校あたりでもよく授業でVBAを使うと聞く。家で宿題、といっても環境設定がほぼ要らないからだろう。

こうなると、なおさら保守性を強化できる術を広めたくなる。

2010年07月09日

VBAで全てを賄おうとはしない

VBAは確かに便利だが、他の言語では簡単に実装できるものが、VBAではアルゴリズムから構築しなければならない、というケースも結構ある。

過去、VBAから何でもやる方が使用環境を選ばずいいのではと思っていたが、手間を考えれば外部プログラムを作って、それを呼び出す方がよほど効率もいいし間違いも少ない。

例えばbase64へのエンコード/デコード。または、連想配列。はたまた、キューやスタック。こういうのをVBAで実装していたりもしたが、VB.netなどではメソッド化されており、内部のアルゴリズムをこちらで考える必要がない。これをVBAから呼び出せるためのDLLなりを用意してやれば利用できる。どこかで余計なバグを組み込んでしまうリスクも激減する。

VBAの言語が拡張されていくのはいいことだが、環境が許せば、DLLを積極的に利用しているのも手ではないかと思う。

2010年07月07日

ToDoリスト 2010.07

 凡例
  □ 予定 / ■ 完了 / ◇ 準備中 / ◆ 実施中


【VBA関連】
 --現在のものの再開--
  ◇ VBAフレームワーク できるところから公開
  □ あみだくじ on VBA ものの完成と記事の再開
  □ 類ノススメ 再開
 --新規計画--
  □ 算数・数学とVBA 記事の構想 - 着手準備
  ◆ VBAと.netの連携 記事の構想 - アメブロの「テーマ」変更により着手
  ◇ OpenOffice.org とのマクロの互換性 記事の構想
  □ OpenOffice.org とのドキュメントの互換性 記事の構想

【技術系】
 --従来分--
  □ G社ツール インストールマニュアル作成(英語→日本語化込み) PC返却 - 作業中
  □ 某サイト企画 Action script3.0 + サーバー言語 + サーバー構築 - 作業再開予定
  ◇ Flex サーバー通信方式の検討と可能なら解説 予定
 --新規計画--
  ◇ OpenOffice.org のマクロの解説 記事の構想

【仕切り系】
 --イベント--
  □ 2010.07.予定 出版記念公演 お手伝い(東京:六本木か?) - 勝手に予定
  □ 2010.11.予定 Webシンジケート(あれば) お手伝い(群馬県太田市か?) - 勝手に予定

【学習・資格維持系】
 --ネット--
  ◆ プロジェクトマネジメント関連 PDU25分の研修 - 受講中
  □ ITコーディネータ ポイント申請
  □ PMP ポイント申請
 --リアル--
 

【仕事系】
 --今後--
  ◆ 人材会社 案件依頼(複数) 実施中
 --サブ--
  ◆ 某飲食店 HP作成 コンセプト/デザイン ベースに打合せ (2回目を7月中に)

【自前環境系】
 --外部--
  □ Java/script言語の使えるプロバイダへの変更 
 --外部--
  □ VM/Ubuntu環境作成 Java/Flexなどのテスト環境
 


------

 総括:コピペに近い・・
 標語:数時間でできることは、数時間で終わらせてしまう。先延ばしにしない。
同じテーマの最新記事

2010年06月09日

データベース接続処理をクラスモジュールで作成するメリット

VBA でデータベース接続処理を書いた事のある方、いらっしゃることだろう。

データベースを読み込む箇所では毎回接続処理を書いたりしているのではないだろうか?仮に「DBアクセス共通処理」を作ったとしても、ある箇所で既に使用し、セッションを使っていたら利用できないから共通化なんて無理!と言われるかもしれない。

いやいや、ところが共通化はできるのである。そのキーワードは「クラスモジュール」の利用である。

クラスモジュールは、必要なときに必要なだけ、コピーを取って利用することができる。そう、テストの答案用紙の原紙があるとしよう。
・生徒が3人やってきたら3枚コピーし、名前を書いて貰う。 
  ⇒クラスモジュールは必要に応じてコピーをする。ただし、識別できる名前を付ける必要がある。
・生徒に問題を解かせる。もちろん、ある生徒が書いた回答が別の生徒の回答に影響を与えることはない。
  ⇒クラスモジュールはそれぞれのコピーは独立しており、互いに干渉しない。
こんなような関係なので、クラスモジュールで共通処理を作り、接続するところでそれぞれの名前を付けてコピー(生成)し、使い終わったら破棄する、というようにすればよい。

このあたりはソースコード付きで近く解説したいと思う。

2010年06月01日

ToDoリスト 2010.06.01

 凡例
  □ 予定 / ■ 完了 / ◇ 準備中 / ◆ 実施中


【VBA関連】
 --現在のものの再開--
  □ VBAフレームワーク できるところから公開
  □ あみだくじ on VBA ものの完成と記事の再開
  □ 類ノススメ 再開
 --新規計画--
  □ 算数・数学とVBA 記事の構想 - 着手準備
  □ VBAと.netの連携 記事の構想 - 着手準備
  □ OpenOffice.org とのマクロの互換性 記事の構想 - 妄想中


【技術系】
 --従来分--
  □ G社ツール インストールマニュアル作成(英語→日本語化込み) PC返却 - 作業中
  ■ 某サイト企画 Action script3.0 + サーバー言語 + サーバー構築 - 作業再開予定
  ■ Eclipseにaxdtを。新しいaxdtに対応した設定方法 調査 - 作業着手予定
 --新規計画--
  □ 初心者向け VMWare Server インストール&ゲストOSインストール&ネットワーク設定 解説
  □ OpenOffice.org とのドキュメントの互換性 記事の構想

【仕切り系】
 --イベント--
  ■ 2010.05.下旬 知人主催の音楽発表会 裏方(東京都北区) - リハ/本番とも 確定
  □ 2010.07.予定 出版記念公演 お手伝い(東京:六本木か?) - 勝手に予定
  □ 2010.11.予定 Webシンジケート(あれば) お手伝い(群馬県太田市か?) - 勝手に予定

【学習・資格維持系】
 --ネット--
  ◆ プロジェクトマネジメント関連 PDU25分の研修 - 受講中
  □ ITコーディネータ ポイント申請
  □ PMP ポイント申請
  ◆ 某自治体 某養成講座 受講申請 - 申請中
  □ 某自治体 ビジネス知的財産講座(6/19 土) - 申込予定 

【仕事系】
 --現職--
  ◆ 引継 準備と実施
 --今後--
  ◆ 人材会社 案件依頼(複数) 実施中


------

 総括:気合いが足りーーーん!

2010年05月23日

会社から参照するために

記事にするためにメモしたがそのままになっていたものをとりあえずまとめてアップ。 接尾辞 パソコン活用研究BASIC&VB&EXCEL達人道場より VB&VBA-オブジェクトとイベント FROMのイベント その1(イベントが発生するタイミング) mougモーグ「最初に入力するテキストボックスの文字列を反転させる(選択状態にする)」 Ttatsuya's Home Page「VB 定数一覧」

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

メンバー紹介

タグパネル

ランキング

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