VBAと日々のこぼれ話

  1. VBA

【VBA】ExcelやテキストへDAO・ADO接続する際に使用するISAMフォーマット一覧

はじめに

以前に書いたJETデータベースエンジンを利用した外部データ接続(ADO接続・DAO接続)の際にISAMフォーマットを指定と書きましたが、それが何なのか詳細をまとめました。

ISAMとは

そもそもIndexed Sequential Access Methodと言い、データ管理手法の一つです。
日本語に訳すると索引順編成ファイル、索引付き順次アクセス方式などとも呼ばれています。

今はマイナーとなっていますが、歴史あるデータ管理手法でRDBMSはこの手法を応用しています。※私はCOBOL経験者なので割に馴染みがあります

どういったデータ管理手法なのかは、本題より脱線するので割愛します。もし知りたいといった方がいれば「ISAM データ構造」といったキーワードで検索すると詳しい解説を発見できます。

ISAMフォーマットとは

今回は、JETデータベースエンジンを利用してDAO・ADO接続を行う場合、ISAM形式の外部データベースへ接続する際にその接続情報として「Extended Properties」に指定するISAMフォーマットを指しています。

またISAM形式の外部データベースは何なのか、というのは下記のISAMフォーマット一覧のファイル形式を参照してください。

サンプルコード

サンプルコード上では「Excel 12.0 Xml」がISAMフォーマットに該当します。

【スポンサーリンク】



ISAM フォーマット一覧(抜粋)

レジストリを確認して書き起こしました(☆)
そこから、ExcelVBA(AccessVBA)で特に使いそうなものを抜粋しています。

ファイル形式 ISAM Formats Engine
Excel5.0/95ブック(*.xls) Excel 5.0 Excel
Excel97-2003ブック(*.xls) Excel 8.0 Excel
Excelバイナリブック(*.xlsb) Excel 12.0 Excel
Excelマクロ有効ブック(*.xlsm) Excel 12.0 Macro Excel
Excelブック(*.xlsx) Excel 12.0 Xml Excel
テキストファイル(*.txt,*.csv,*.tab,*.asc) Text Text

一覧内にあるEngineについては今回は「ISAMフォーマット毎に利用エンジンは違う」くらいの認識で構いません。

☆Office2007にJETデータベースエンジンが追加され、2018年時点ではこの追加されたJETデータベースエンジンを利用するのが主流なため

ソース元(レジストリ)

コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\(バージョン)\Access Connectivity Engine\ISAM Formats
※バージョンは、Office2016であれば「16.0」です。

ディレクトリ名から大体分かるかと思いますが、今、自身が操作している端末にインストールされているOffice16.0で利用できるプロバイダ「JETデータベースエンジン(Access Connectivity Engine)」の「ISAMフォーマット(ISAM Formats)」のレジストリとなります。

レジストリ参照の注意点

Windowsの様々な設定情報が格納されている場所で通常手動で触ることは殆どありません。
うっかり書き換えると最悪の場合、PCが動かなくなったりするので自己責任で参照してください。

ISAMフォーマット注意点

気を付けたいのは、Excel2007で追加されたファイル形式とそれに対応するISAMフォーマットです。
具体的に言うと拡張子「.xlsx」の場合、対応するISAMフォーマットには「Xml」がついていることです。

「Excel 12.0 Xml」は、その末尾の文字で拡張子「.xml」ファイルに使いたくなります。

が、そもそもExcelにそんな拡張子のファイルはありません。

おそらくですが、ファイルの保存形式がOpen XML形式のテキストデータに変更になったことに由来しています。

Excelのデータ保存形式

Excel2003まではデータ保存形式は『バイナリ形式』でした。

それが、Excel2007より標準の保存形式は『Open XML形式』に変更になっています。

ファイルのデータ保存形式が『Open XML形式』に変更になったのであれば、ISAM形式の記述も『Excel 12.0』をOpen XML形式としてもらいたいところですが、そこは前に倣えで従来通りバイナリ保存形式の「.xlsb」のISAMフォーマットを無印としたのでしょう。

感覚的(見えたまま)に使っている身としては少々分かりにくいですが、保存形式がバイナリ→OPEN XMLを知っている方からするとバイナリ=ISAM形式は無印がごく自然な流れだと言えそうです。

ちなみにExcel2007以降でバイナリ形式のファイルは以下の拡張子のファイル形式が存在していますが、同じバイナリ形式でも下位バージョン互換用・バイナリ形式ファイル用で保存形式は異なります。

下位バージョン互換用:「.xls」「.xlt」
バイナリ形式ファイル用:「.xlsb」

【スポンサーリンク】



VBAの最近記事

  1. 【VBA】未だに苦手としていること

  2. 【VBA】モジュール先頭に記述する4種類のOption キーワード ステートメント

  3. 【VBA】同じ階層体系のフォルダを量産したい

  4. VBAの腕を知るための3つの短い質問を考える

  5. 【VBA】ExcelやテキストへDAO・ADO接続する際に使用するISAMフォーマット一覧…

関連記事

【スポンサーリンク】




PAGE TOP