カテゴリー: VBA

Excel VBAメモ Accessファイルで定義したフィールドの型を調べてみる

仕事で用があったのでメモすることに。
ポイントはこんな感じかな。

  • ADODB.Connection.Openでデータベースへ接続する
  • ADODB.Recordset.Openでクエリを実行する
  • ADODB.Recordset.Fieldsでフィールドのコレクションを取得する
  • コレクションそれぞれのTypeプロパティでフィールドの型を取得する

んで、今回用意したファイルはこんな感じ。

Accessのデータベースファイルの内容は前に書いた記事と同じ(記事はここ)。

COMを参照する設定しないんでタイプの定数を自前で定義しとく。
今回は必要な分だけをグローバル定数として定義しといた。

んで、コードはこんな感じ。

んで、実際に動かしてみるとこんな感じ。

んまま、明日への自分へのメモってことで。

VBA(FieldsType)

Filed under: VBATagged with: , , , , , , , , , , , , , , , , , , , ,

Excel VBAメモ Accessデータベースの空文字列を許可のプロパティを取得してみる

Accessのデータベースファイルを取り扱うときにADODB.Connectionでは取得できず困ったのでメモしとくことに。

ポイントとしてはだいたいこんな感じ。

  • CreateObject(“ADOX.Catalog”)でデータベースへアクセスするオブジェクトを作成する
    ※参照設定しないのでCreateObjectでCOMを使う必要がある
  • Properties(“Jet OLEDB:Allow Zero Length”).Valueで空文字列の許可のプロパティを取得する

んで、サンプルとしてこんなデータベースを準備した。

テーブルとしてはこんな感じ。

それぞれのフィールドの定義はこんな感じ。

  1. IDってフィールドはこんな感じ。
  2. 名前ってフィールドはこんな感じ。
  3. 有無ってフィールドはこんな感じ。
  4. 何かの数字ってフィールドはこんな感じ。
  5. コメントってフィールドはこんな感じ。
    で、こいつだけ空文字列の許可ってのを「はい」にしてる。

コードはこんな感じ。

実際に動かしてみたらこんな感じ…フィールド名:プロパティの値って感じで表示してるんだけど、ちゃんと値が表示されとる。

そんなこんなで、明日への自分へのメモってことで。

VBA(AllowZeroLength)

Filed under: VBATagged with: , , , , , , , , , , , , , , , , , , , , , ,

VBAメモ メソッドでCollectionを戻り値で返してみる

VBA独特と言うかクセと言うか…なんか困ったのでメモしとくことに。
ざっくりこんな感じ?

  1. 戻り値にSetを指定する
  2. 受け取り側で代入する方にSetを指定する

んで、まずは呼び出される方はこんな感じ。

んで、呼び出す方はこんな感じ。

実行してみるとこんな感じになった。

知っていると簡単なんだけど知らんとテンパるな…。
そんなこんなで、明日への自分へのメモで。

Filed under: VBATagged with: , , , , , , , , , , , ,

Excel VBAメモ 外部DLLを使わずにzip形式の圧縮ファイルを作ってみる

少し前に圧縮ファイルを展開するのを記事にしたんだけど(記事はここ)、逆もやってみたくなるのも自然な流れ?
ポイントはこんな感じ。

  • 空のzip形式圧縮ファイルを作成する
    ※ファイルを作るときは圧縮ファイルとして認識させるためのおまじないを書き込む
  • zip形式の圧縮ファイルをフォルダーにみたててファイルをコピーする
    ※ファイルがコピーされたかどうかをチェックする必要がある
  • 外部のDLLを使わない

今回のコードの動きとしてはこんな感じ。

  1. デスクトップに圧縮ファイルを作成する
  2. 圧縮ファイルに入れるファイルはデスクトップにある3つのファイルをコピーする

で、コードはこんな感じ。
コピーするファイルの数は3個ってことにする。

圧縮ファイルの中にコピーするファイルはこんな感じ。

で、実行するとこんな感じ。
デスクトップに圧縮ファイルができとる。

中身を見てるとちゃんとファイルがコピーされとる。

展開してみると展開できる。

んまま、明日への自分へのメモってことで。

Filed under: VBATagged with: , , , , , , , , , , , , , , , , , , , , , ,

Excel VBAメモ オリジナルなリボンメニューのタブとボタンを追加してみる

最近用事があって試したのでメモ。

だいたいのポイントとしてはこんな感じ。

  • xlsmファイルの拡張子をzipに変更して展開する
  • リボンメニューの定義をするXMLファイル(xmlファイル)を作成する
  • リレーションシップの定義をするファイル(.relsファイル)を編集する
  • zipファイルに圧縮する
  • 拡張子を元のxlsmに戻す

まずは、Excelファイルのリボンメニューのタブを追加する。

      1. xlsmファイルの拡張子をzipに変更する。
      2. zipファイルを展開する。
      3. リボンメニュー用のファイルを保存しておくフォルダーを作成する。

        今回作成するフォルダーの名前はcustomUIって名前した。
      4. customUIフォルダーにリボンメニューの定義をするXMLファイルを作成する。
        今回作成するファイルの名前はcustomUI.xmlって名前にした。

        作成するファイルの内容はこんな感じ。
        ※呼び出すメソッドはとりあえずClickButtonって名前にしとく。
      5. _relsフォルダーにある.relsファイルにcustomXMLファイルの場所を相対パスで追記して保存する。

        修正する内容はこんな感じ。
        ※Hereのコメントがあるすぐ次の1行が追加した行になる
      6. zipファイルに圧縮する

        ※Windowsの右クリックメニューで圧縮する場合はファイルの選択位置を
      7. 圧縮したファイルの拡張子をzipからxlsmに変更する。

今回は呼び出すマクロはとりあえずこんな感じにした。
ボタンをクリックするとメッセージダイアログを表示するって動作のはず。

で、動作を確認してみる。

ファイルを開くとこんな感じ。
タブが「タブの名前」ってタイトルで追加されとる。

追加したタブを表示するとこんな感じ。
ボタンが「ボタン」って名前で追加されとる。

ボタンをクリックするとこんな感じでメッセージボックスが表示される。

ちなみに作ったファイルはここからダウンロードして…。

RibbonCustomize(2010)

そんなこんなで、メモってことで。

Filed under: VBATagged with: , , , , , , , , , , , , , ,