「コード」カテゴリーアーカイブ

VBA: ファイル名に関連した文字列操作


過去に書いていた VBA のファイル名に関連した文字列操作の記事をまとめました。

ファイルパスからディレクトリ名を取得する

ファイルパスから一番右のバックスラッシュの位置を探して、ファイルパスのそれより左の部分を抽出します。 バックスラッシュが見つからなかった場合(ディレクトリがファイルパスに含まれない場合)は、空文字列が返ります。

ファイル名から拡張子を取り除く

注意

InStrRev が返す文字位置は 1 から始まります。 (配列インデックスのように 0 から始まるわけではありません。)

ファイル名に “.”(ピリオド) が含まれない場合は Left の第2引数に負の数が渡るため、例外が発生します。 これを解消するには次のようにします。

Right を使って拡張子を取得することもできます。

ファイル名から拡張子を取得する

ここでは、あるところで使われていたコードを見てみます。

与えられた文字列にバックスラッシュがあればそれより後ろの文字列にして、 その後ピリオドがあればそれより後ろを抜き出しています。 ピリオドがなければ空文字列が返ります。

関係する関数

InStrRev(string1, string2[, start[, compare]])

ある文字列 (string1) の中から指定された文字列 (string2) を最後の文字位置から検索を開始し、最初に見つかった文字位置を返す文字列処理関数です。 引数 start を省略すると -1 が使用され、最後の文字位置から検索を開始します。 compare は比較するモード(テキスト/バイナリ)を指定します。省略時はバイナリモードになります。

検索文字列が見つからなければ 0 が返ります。

Left(ByVal str As String, ByVal Length As Integer)

与えられた文字列の左端から指定された長さの文字列を抽出します。 Length が 0 より小さいと例外が発生します。

Mid(string, start[, length])

与えられた文字列の部分文字列を返します。 start には先頭の文字を 1 として文字位置を指定します。

Right(ByVal str As String, ByVal Length As Integer)

与えられた文字列の右端から指定された長さの文字列を抽出します。 Length が 0 より小さいと例外が発生します。


VBA: Access のテーブル定義を一覧で出す方法


Microsoft Office Access(アクセス)のファイル(.mdb)の中のテーブル定義一覧を、 Oracle用のテーブル定義に変換して、一覧で出力するコードを紹介します。

概要

  • Excel と VBA を使用します。
  • VBA の 関数 GetTableDefinitions を実行すると、 開いているエクセルのシートにアクセスファイル内のテーブル定義を一覧出力します。
  • テーブル定義書(.xls)に貼り付けることを想定してテキストデータを作ります。
  • Access のテーブルを Oracle 用 にするので、 例えばテキストのカラムは VARCHAR2 として表示されます。
  • システムテーブルは出力しません(コードを一部変更すれば出力できます)。
  • リンクテーブルは、リンクの内容を表示します。 リンク先のテーブルの定義は出力しません。

使い方

  1. Excel を開きます。
  2. 開発ツール Visual Basic Editor を開きます。
  3. モジュールを追加します。
  4. ツールの参照設定から Microsoft DAO にチェックを入れます。
  5. 下のコードを貼り付けます。
  6. 関数 GetTableDefinitions を実行します。

続きを読む VBA: Access のテーブル定義を一覧で出す方法