2016/11/27

ExcelのVBAで差集合を求める関数を作ってみた

Aの集合からBの集合を取り除いて残った分(差集合)を求めたい場合、
SQLであればEXCEPTやMINUSが用意されています。

Excelだと似たようなものが無さそうなので、
遊び半分でVBAをつかった自作関数を作ってみました。
(いくつか注意事項はあります)

内容は以下の通りです。

  • 使い方のイメージ
  • 注意事項
  • サンプルのVBAコード
  • SQLの場合

続きを読む

2016/10/23

ExcelVBAを書くときに気を付けていること その1

時々、他人が書いたVBAの修正を依頼されることがあります。
他人が書いたコードは基本的に読みづらく感じるものです。

ですが、中には本当に目を覆いたくなるような凄惨なコードがあったりします。(/_\)

自分だけが使うマクロならそれでもいいと思いますが、
他人に配って使ってもらう前提のマクロなら
コードのメンテナンスを誰かに引き継ぐ可能性もあります。

引き継ぎをする方もされる方も
出来ればバグの起きにくい見やすいコードの方がいいですよね。

ということで、
「人の振り見て我が振り直せ」ではないですが、
ExcelVBAを書くときは以下のことに気を付けています。

続きを読む

2011/06/18

Oracleのテーブル定義書を自動で作成するツール

Oracleのテーブル仕様を確認するツールをExcelのVBAで作ってみた。

簡単に言えば、
現行のテーブルに対してSQLを発行し、テーブル定義書を自動生成するツールです。

一応、最低限の情報(以下の情報)は分かる…かも。

・テーブル名
・項目名
・データの型
・データ長
・NULLの許可


続きを読む

2011/01/24

Excel VBA のフォルダの参照

Excel VBA での「フォルダの参照」のサンプルソース

API を使用せずに
Shell.Application の BrowseForFolder を使用する方法。

単に BrowseForFolder を使用するだけだと
デスクトップ選択時には
  XXX.Items.Item.Path の部分で
Err.Number = 91 のエラーが出る仕様になっている。
なので、その辺を考慮したソースコードを作成した。

ただし、マイ コンピュータ や マイ ネットワーク を選択したときも
よくわからない番号が返ってくる。

おそらく、この部分も考慮が必要なのかもしれないが...
エクスプローラのアドレスにこのへんてこな数字を入れてみると
ちゃんと マイ コンピュータ や マイ ネットワークが見れる。

...なので、
以下のサンプルソースでは デスクトップ選択時のみエラーが出ないように対応しています。


続きを読む

2011/01/16

指定フォルダ内にあるExcelファイルの印刷ページ数を数えるマクロ

Excelファイルのページ数を数えなければいけない作業があった。

作業手順は
1.Excelファイルを開き、「すべてのシートを選択」でシートを全部選択した状態にする。
2.「印刷プレビュー」を開き、左下に表示されるページ数を確認する。

ファイル数が100を超えており、
いちいちファイルを開いて上記の作業をするのがとても面倒だったので
割と適当な Excelのマクロを作ってみた。

続きを読む