VB から ADO を利用して EXCEL の操作 概要 此の資料では Excel ワークシートをデータソースとして ActiveX オブジェクト (ADO) を使用する方法を説明して居る 亦 Excel 固有の構文上の問題や制限事項に付いても解説する 此の資料では OLAP やピボットテーブルテクノロジ 其の他の Excel データの特殊な使用法に付いては扱わない Excel ワークシートの行 及び 列はデータベーステーブルの行 及び 列と良く似て居る Excel はリレーショナルデータベース管理システムではない事 及び 其れに依り齎される制限事項を認識して居れば Excel と其のツールを利用してデータを格納 又は 分析する事が有効な場合は少なく無い マイクロソフトの ActiveX データオブジェクトでは Excel ブックをデータベースとして扱う事が出来る 此の資料では 其の方法を下記の項目で説明する ADO で Excel に接続する ADO で Excel データを取得 及び 編集する Excel のデータソース構造 ( メタデータ ) を取得する 注 : 此の資料は Microsoft Windows 2000 上で Visual Basic 6.0 Service Pack 3 及び Excel2000 を使用し Microsoft Data Access Components (MDAC) 2.5 でテストした物で有る 異なるバージョンの MDAC Microsoft Windows Visual Basic 又は Excel では 此の資料とは動作が異なる場合が有る ADO で Excel に接続する ADO は MDAC で提供される下記の孰れかの OLE DB プロバイダを使用して Excel データファイルに接続する事が出来る Microsoft Jet OLE DB プロバイダ ODBC ドライバ用 Microsoft OLE DB プロバイダ Microsoft Jet OLE DB プロバイダの使用方法 Jet プロバイダで Excel データソースに接続するには ファイル名を含むパスと Excel ファイルバージョンの 2 個の情報而巳が必要で有る 接続文字列を使用する Jet プロバイダ Dim cn as ADODB.Connection Set cn = New ADODB.Connection With cn.provider = "Microsoft.Jet.OLEDB.4.0".ConnectionString = "Data Source=C: temp test.xls;extended Properties=Excel 8.0;".Open End With プロバイダのバージョン :Jet 4.0 プロバイダを使用する必要が有る Jet 3.51 プロバイダは Jet ISAM ドライバをサポートして居ない Jet 3.51 プロバイダを指定すると実行時に 組み込み可能な ISAM ドライバは見つかりませんでした と謂うエラーメッセージが表示される -1-
Excel のバージョン :Excel 95 ブック (Excel Version 7.0) に対しては Excel 5.0 を指定し Excel 97 Excel 2000 及び Excel 2002 ブック (Excel Version 8.0 9.0 及び 10.0) に対しては Excel 8.0 を指定する Data Link Properties ダイアログボックスを使用する Jet プロバイダ アプリケーションで ADO データコントロール 又は Data Environment を使用する場合は 必要な接続設定を収集する為の [Data Link Properties] ダイアログボックスが表示される 1.[Provider] タブで [Jet 4.0 Provider] をクリックする Jet 3.51 プロバイダは Jet ISAM ドライバをサポートして居ない Jet 3.51 プロバイダを指定すると実行時に下記のエラーメッセージが表示される 組み込み可能な ISAM ドライバは見つかりませんでした 2.[ 接続 ] タブで 使用するファイルを参照する "User ID" 及び "Password" エントリは Excel 接続には適用されない為 無視する ( パスワードで保護された Excel ファイルをデータソースとして開く事は出来ない ) 3.[ 全体 ] タブで一覧の [Extended Properties] をクリックし 次に [ 値の編集 ] をクリックする Excel 8.0; と入力し セミコロン (;) で他のエントリと区切る Jet プロバイダは 特に指定がなければ Microsoft Access データベースを想定する為 此の手順を省略すると接続テスト時にエラーメッセージが表示される 4.[ 接続 ] タブに戻り [ 接続テスト ] をクリックする テストが成功した事を示すメッセージが表示される 其の他の Jet プロバイダ接続設定 列見出し : デフォルトでは Excel データソースの最初の行は列見出しと看做され フィールド名として使用される 最初の行を列見出しとして使用しない場合は 此の設定をオフにする必要が有る オフにしないと データの最初の行がフィールド名として使用される為に消えて仕舞う 此の設定を追加するには 接続文字列 Extended Properties にオプションの HDR= 設定を追加する デフォルトは HDR=Yes だが 此れは特に指定する必要は無い 列見出しがない場合 HDR=No を指定する必要が有る フィールドにはプロバイダに依り F1 F2 等の名前が付けられる Extended Properties 文字列に複数の値が含まれる事に成る為 Extended Properties をダブルクォーテーションで囲み 更に別のダブルクォーテーションを追加して 最初のダブルクォーテーションで囲んだ値をリテラル値として使用する様に指定する 下記の例を参照の事 ( 見易くする為 余分なスペースを追加して居る ).ConnectionString = "Data Source=C: temp test.xls;extended Properties=" " Excel 8.0; HDR=No;" " " ODBC ドライバ用 Microsoft OLE DB プロバイダの使用方法 ODBC ドライバ用のプロバイダ ( 此の資料では簡潔にする為 ODBC プロバイダと呼ぶ ) でも Excel データソースに接続するには 2 個の情報而巳が必要で有る 其等はドライバ名と ブックのパス 及びファイル名で有る 重要 :Excel への ODBC 接続は デフォルトでは 読み取り専用で有る 使用する ADO レコードセットの LockType プロパティの設定値でも此の接続レベル設定は上書きされない データを編集するには 接続文字列 又は DSN 構成の ReadOnly に False を設定しなければ成らない False を設定しないと 更新可能なクエリである事が必要で有る と謂うエラーメッセージが表示される -2-
DSN を指定しない接続文字列を使用する ODBC プロバイダ Dim cn As ADODB.Connection Set cn = New ADODB.Connection With cn.provider = "MSDASQL".ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _"DBQ=C: temp test.xls; ReadOnly=False;".Open End With cn.close Set cn = Nothing DSN を含む接続文字列を使用する ODBC プロバイダ Dim cn As ADODB.Connection Set cn = New ADODB.Connection With cn.provider = "MSDASQL".ConnectionString = "DSN=MyExcelDSN;".Open End With cn.close Set cn = Nothing Data Link Properties ダイアログボックスを使用する ODBC プロバイダ アプリケーションで ADO データコントロール 又は Data Environment を使用する場合は 必要な接続設定を収集する為の [Data Link Properties] ダイアログボックスが表示される 1.[Provider] タブで [Microsoft OLE DB Provider for ODBC Drivers] をクリックする 2.[ 接続 ] タブで 使用する既存の DSN をクリックするか 又は [ 接続文字列を使用する ] をクリックする 必要な接続設定を収集する為の標準 DSN 構成ダイアログボックスが表示される 上述の通り 必要な場合はデフォルトの読み取り専用設定を解除する 3.[ 接続 ] タブに戻り [ 接続テスト ] をクリックする テストが成功した事を示すメッセージが表示される 其他の ODBC プロバイダ接続設定 列見出し : デフォルトでは Excel データソースの最初の行は列見出しと看做され フィールド名として使用される 最初の行を列見出しとして使用しない場合は 此の設定をオフにしなければ成らない オフにしないと データの最初の行がフィールド名として使用される為に消えて仕舞う 此の設定を追加するには 接続文字列にオプションの FirstRowHasNames= 設定を追加する デフォルトは FirstRowHasNames=1 だが 此れは特に指定する必要は無い 此処で 1 = True で有る 列見出しがない場合 FirstRowHasNames=0 を指定する必要が有る 此処で 0 = False で有る フィールドにはドライバに依り F1 F2 等の名前が付けられる 此のオプションは DSN 構成ダイアログボックスでは利用する事が出来ない 但し ODBC ドライバのバグの為に 現時点では FirstRowHasNames を指定しても効果が無い 詰ま -3-
り Excel ODBC ドライバ (MDAC 2.1 以降 ) は指定のデータソースの最初の行を常にフィールド名と看做す 列見出しのバグに付いての関連情報は 以下の サポート技術情報 (Microsoft Knowledge Base) を参照の事 288343 BUG: Excel ODBC Driver Disregards the FirstRowHasNames or Header Setting (http://support.microsoft.com/default.aspx?scid=kb;en-us;288343) スキャン行数 :Excel はリレーショナルデータベースと異なり 其れに含まれるデータに付いての詳細なスキーマ情報を ADO に提供しない 従って ドライバは少なくとも数行のデータをスキャンして各列のデータ型を推測する必要が有る Rows to Scan のデフォルト値は 8 行で有る 行数には 1 から 1 6 迄の整数値を指定する事が出来る 0 を指定すると既存の総ての行がスキャンされる 行数を指定するには 接続文字列にオプションの MaxScanRows= 設定を追加するか DSN 構成ダイアログボックスの Rows to Scan の設定を変更する 其他の設定 : 接続文字列を [Data Link Properties] ダイアログボックスを使用して作成した場合 下記の様に 必ずしも必要でない Extended Properties 設定が接続文字列に追加される事が有る...DefaultDir=C: WorkbookPath;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5; Visual Basic Editor での Collating Sequence エラー 或る特定のバージョンの MDAC を使用する Visual Basic デザイン環境で プログラムがデザイン時に初めて Excel データソースに接続する際に 選択された CollatingSequence は OS でサポートされて居ない と謂うエラーメッセージが表示される事が有る 此のメッセージは Visual Basic の IDE( 統合開発環境 ) で而巳表示され コンパイル済みのプログラムでは表示されない 亦 SQL ステートメントで総てのフィールドが選択される場合も 此のエラーは発生しない 此のエラーに依りプログラムを中断させない為には 抽出条件を付けた選択クエリでは エラー処理を行う必要が有る 関連情報は 以下の サポート技術情報 を参照の事 246167 PRB: Collating Sequence Error Opening ADODB Recordset the First Time Against an Excel XLS 両方の OLE DB プロバイダに適用される考慮事項 データ型の混在に付いての注意 前記の通り ADO は Excel のワークシート 又は 範囲に含まれる各列のデータ型を推測しなければ成らない ( 此れは Excel のセル書式設定には影響されない ) 同じ列に数値と文字列値が混在して居ると重大な問題が発生する事が有る Jet プロバイダと ODBC プロバイダは両方共数が多い型のデータを返すが 数が少ないデータ型に対しては NULL( 空 ) 値を返す 2 個の型が列内で同数ずつある場合 文字列ではなく数値が返される 下記に例を示す 8 行をスキャンし 列に 5 個の数値と 3 個の文字列値が含まれる場合 5 個の数字と 3 個の NULL 値が返される 8 行をスキャンし 列に 3 個の数値と 5 個の文字列値が含まれる場合 3 個の NULL 値と 5 個の文字列値が返される 8 行をスキャンし 列に 4 個の数値と 4 個の文字列値が含まれる場合 4 個の数字と 4 個の NULL 値が返される -4-
結果として 列に値の型が混在する場合は 数値を文字列として其の列に格納し 必要な時にクライアントアプリケーションで Visual Basic の VAL 関数 又は 同等の関数で数字に戻す様にする パスワードで保護されたブックは開けない Excel ブックがパスワードで保護されて居る場合 ファイルが既に Excel で開かれて居る場合以外は 接続設定で正しいパスワードを指定しても 其のブックを開いてデータにアクセスする事は出来ない 開こうとすると ファイルを解読できませんでした と謂うエラーメッセージが表示される 関連情報は 以下の サポート技術情報 (Microsoft Knowledge Base) を参照の事 211378 XL2000: "Could Not Decrypt File" Error with Password-Protected File (http://support.microsoft.com/default.aspx?scid=kb;en-us;211378) ADO で Excel データを取得と編集を行う 此処では Excel データを操作する際の 2 種の側面に付いて説明する データを選択する方法 データを変更する方法 データを選択する方法 データを選択するには 下記の通り幾つかの方法が有る コードを使用して Excel データを選択する ADO データコントロールを使用して Excel データを選択する Data Environment コマンドを使用して Excel データを選択する コードを使用して Excel データを選択する Excel データは ブックの下記の孰れかの領域に含まれる ワークシート全体 ワークシート上の名前付きセル範囲 ワークシート上の名前なしセル範囲 ワークシートの指定 ワークシートをレコードソースとして指定するには ワークシート名の後にドル記号を付け 角括弧で囲む 下記に例を示す strquery = "SELECT * FROM [Sheet1$]" キーボードのチルダ ( ~ ) の下に有る斜めのシングルクォーテーションマーク ( バッククォート ` ) を使ってワークシート名を区切る事も出来る 下記に例を示す strquery = "SELECT * FROM `Sheet1$`" -5-
マイクロソフトでは 角括弧の使用を推奨して居る 角括弧は不確定なデータベースオブジェクト名に対する現在有効な表記方法で有る ドル記号と角括弧 又は ドル記号而巳を省略すると オブジェクト 'Sheet1' が見つかりませんでした と謂うエラーメッセージが表示される 亦 ドル記号を使用して角括弧を省略すると FROM 句の構文エラーで有る と謂うエラーメッセージが表示される 普通のシングルクォーテーションマークを使おうとすると クエリの構文エラーで有る クエリの句が不完全で有る と謂うエラーメッセージが表示される 名前付き範囲の指定 名前付きセル範囲をレコードソースとして指定するには 単に定義済みの名前を使用する 下記に例を示す strquery = "SELECT * FROM MyRange" 名前なし範囲の指定 名前なしセル範囲をレコードソースとして指定するには 標準的な Excel の行 及び 列表記を角括弧内のシート名の終わりに追加する 下記に例を示す strquery = "SELECT * FROM [Sheet1$A1:B10]" ワークシートの指定に付いての注意 : プロバイダでは 指定したワークシート上で 一番上の左端の空白でないセルからデータのテーブルが始まると仮定される 詰まり 行 3 列 C からもデータのテーブルは問題なく開始出来る 但し ワークシートのタイトル等をセル A1 のデータの上や左側に入力する事は出来ない 範囲の指定に付いての注意 : ワークシートをレコードソースとして指定すると プロバイダに依りワークシートの既存のレコードの下に スペースが許す限り新しいレコードが追加される 範囲 ( 名前付き 又は 名前無し ) を指定する場合も Jet に依り範囲の既存のレコードの下に スペースが許す限り新しいレコードが追加される 但し 元の範囲で再クエリを実行すると 結果のレコードセットには新しく追加された範囲外のレコードは含まれない Version 2.5 以前の MDAC では 名前付き範囲をレコードソースとして指定する場合 定義済み範囲の限界を超えて新しいレコードを追加する事は出来ない 範囲を超えてレコードを追加し様とすると 指定範囲を広げる事は出来ない と謂うエラーメッセージが表示される ADO データコントロールを使用して Excel データを選択する [ADODC のプロパティ ] ダイアログボックスの [ 全般 ] タブで Excel データソースへの接続設定を指定した後 [ レコードソース ] タブをクリックする CommandType に adcmdtext を選択すると [ コマンドテキスト ] ダイアログボックスに上記の構文の SELECT クエリを入力出来る CommandType に adcmdtable を選択して Jet プロパイダを使用して居る場合は 指定のブックで利用可能な名前付き範囲とワークシート名の両方が 名前付き範囲から先にドロップダウンリストに表示される -6-
此のダイアログボックスでは ワークシート名にドル記号が適切に追加されるが 必要な角括弧は追加されない 其の結果 ワークシート名を選択して [OK] をクリックした丈では 後で FROM 句の構文エラーで有る と謂うエラーメッセージが表示される 手作業でワークシート名を角括弧で囲む必要が有る ( 此のコンボボックスは編集可能で有る ) ODBC プロバイダを使用して居る場合 此のドロップダウンリストには名前付き範囲而巳が表示される 但し ワークシート名を適切な区切り文字と共に手作業で入力する事が出来る Data Environment コマンドを使用して Excel データを選択する Excel データソースへの Data Environment 接続を設定したら コマンドオブジェクトを新規作成する データソースに SQL ステートメントを選択すると テキストボックスに上記の構文のクエリを入力する事が出来る データソースにデータベースオブジェクトを選択し 最初のドロップダウンリストでテーブルを選択して Jet プロパイダを使用して居る場合は 選択したブックで利用可能な名前付き範囲とワークシート名の両方が 名前付き範囲から先にドロップダウンリストに表示される ( 此処でワークシート名を選択する場合 ADO データコントロールの時の様に手作業でワークシート名を角括弧で囲む必要は無い ) ODBC プロバイダを使用する場合 此のドロップダウンリストには名前付き範囲而巳が表示される 但し ワークシート名を手作業で入力する事が出来る データを変更する方法 編集 Excel データは通常の ADO メソッドで編集する事が出来る 接続設定で指定しない限り Excel への ODBC 接続はデフォルトで読み取り専用で有る事を覚えて置く必要が有る 前述の ODBC ドライバ用 Microsoft OLE DB プロバイダの使用方法 を参照の事 追加 Excel レコードソースにスペースの許す限りレコードを追加する事が出来る 但し 元の指定範囲外に新しいレコードを追加すると 元の範囲指定で再クエリを実行した場合に 此等のレコードは含まれない 前述 範囲の指定に付いての注意 を参照の事 削除 Excel データの削除に関しては リレーショナルデータソースのデータより多くの制約条件が有る リレーショナルデータベースでは レコード と関連の無い 行 は意味を持たないが Excel ワークシートには 此れは当て嵌らない フィールド ( セル ) の値は削除する事が出来るが 下記の事は出来ない レコード全体を一度に削除すると 此の ISAM では リンクテーブル内のデータを削除する事は出来ない と謂うエラーメッセージが表示される 注 : レコードを削除するには 各フィールドの内容を個別に削除する Excel の数式を含むセルの値を削除すると 此のコンテキストで操作は許可されない と謂うエラーメッセージが表示される データが削除された空のワークシート行は削除出来ない レコードセットには 空の行に対応する空のレコードが含まれる -7-
Excel データを ADO で編集する際の注意 :ADO を使用して Excel にテキストデータを挿入すると テキストの前にシングルクォーテーションマークが付く 此の場合 後で新しいデータを操作する際に問題が生じる事が有る Excel のデータソース構造 ( メタデータ ) を取得する ADO を使用して Excel データソース構造に付いてのデータ ( テーブル 及び フィールド ) を取得する事が出来る 2 個の OLE DB プロバイダ間で結果が稍異なるが 両方のプロバイダは少なくとも同じ有用な情報を持つ少数のフィールドを返す 此のメタデータは ADOConnection オブジェクトの OpenSchema メソッドで取得出来る 此れは ADO Recordset オブジェクトを返す ADO の拡張機能を持つ Microsoft ActiveX Data Objects Extensions for Data Definition Language and Security (ADOX) ライブラリを使用しても同様にメタデータを取得出来る 但し テーブル がワークシート 又は 名前付き範囲の孰れかで フィールド が限られた数の汎用データ型で有る様な Excel データソースの場合 ADOX の持つ拡張機能は余り役立たない テーブル情報のクエリ リレーショナルデータベースで利用出来る様々なオブジェクト ( テーブル ビュー ストアドプロシージャ等 ) の中で Excel データソースは 指定されたブックで定義されるワークシートと名前付き範囲を含むテーブルオブジェクト而巳を公開する 名前付き範囲は テーブル として ワークシートは システムテーブル として扱われる 此の table_type プロパティ以外に取得出来る更に有用なテーブル情報は無い ブックに含まれるテーブルのリストを要求するには 下記のコードを使用する Set rs = cn.openschema(adschematables) Jet プロバイダは 9 個のフィールドを含むレコードセットを返す 其の内 4 個のフィールド而巳に値が入力されて居る table_name table_type( テーブル 又は システムテーブル ) date_created date_modified テーブルに対して 2 個の日付フィールドには常に同じ値が表示され 其れは 最終更新日 で有る 言い換えれば date_created は 信頼出来ない ODBC プロバイダも 9 個のフィールドを含むレコードセットを返す 其の内 3 個のフィールド而巳に値が入力されて居る table_catalog ブックが存在するフォルダ table_name table_type 上記の説明を参照 ADO のドキュメントに従えば OpenSchema メソッドに 例えば下記の様な追加条件を指定すると ワークシートのリスト丈を取得する事が出来る Set rs = cn.openschema(adschematables, Array(Empty, Empty, Empty, "System Table")) -8-
残念乍ら 此のコードは MDAC Version 2.0 以降の Excel データソースに対しては 孰れのプロバイダを使用した場合でも無効で有る フィールド情報のクエリ Excel データソースの各フィールド ( 列 ) のデータ型は 下記の孰れかで有る 数値 (ADO データ型 5 addouble) 通貨 (ADO データ型 6 adcurrency) 論理又はブール (ADO データ型 11 adboolean) 日付 (ADO データ型 7 addate Jet 使用 135 addbtimestamp ODBC 使用 ) 文字列 (ADO adchar 型 202 等 advarchar 200 advarwchar 其他 ) 数値型列の numeric_precision には常に 15 が返される ( 此れは Excel の最大有効桁数で有る ) 文字列型列の character_maximum_length には常に 255 が返される ( 此れは Excel 列内の文字列の最大表示幅で有り 最大長では無い ) data_type プロパティ以外に取得出来る更に有用なフィールド情報は無い テーブル内のフィールドのリストを要求するには 下記のコードを使用する Set rs = cn.openschema(adschematables, Array(Empty, Empty, "TableName", Empty)) Jet プロバイダは 28 フィールドのレコードセットを返す 其の内 数値フィールドでは 8 文字列フィールドでは 9 個のフィールドに値が入力されて居る 有用なフィールドは下記の通りで有る table_name column_name ordinal_position data_type ODBC プロバイダは 29 フィールドのレコードセットを返す 其の内 数値フィールドでは 10 文字列フィールドでは 11 のフィールドに値が入力されて居る 有用なフィールドは上記の場合と同じで有る テーブル及びフィールドと其等のプロパティの列挙 例えば下記のサンプルの様な Visual Basic コードを使用して Excel データソース内のテーブルと列 及び 夫々れに付いての情報を列挙する事が出来る 下記のサンプルでは結果が同じフォーム上のリストボックス List1 に出力される Dim cn As ADODB.Connection Dim rst As ADODB.Recordset Dim inttblcnt As Integer, inttblflds As Integer Dim strtbl As String Dim rsc As ADODB.Recordset Dim intcolcnt As Integer, intcolflds As Integer Dim strcol As String Dim t As Integer, c As Integer, f As Integer Set cn = New ADODB.Connection With cn.provider = "Microsoft.Jet.OLEDB.4.0".ConnectionString = "Data Source=" & App.Path & " ExcelSrc.xls;Extended Properties=Excel 8.0;" -9-
'.Provider = "MSDASQL" '.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & "DBQ=" & App.Path & " ExcelSrc.xls; ".CursorLocation = aduseclient.open End With Set rst = cn.openschema(adschematables) inttblcnt = rst.recordcount inttblflds = rst.fields.count List1.AddItem "Tables: " & inttblcnt List1.AddItem "--------------------" For t = 1 To inttblcnt strtbl = rst.fields("table_name").value List1.AddItem vbtab & "Table #" & t & ": " & strtbl List1.AddItem vbtab & "--------------------" For f = 0 To inttblflds - 1 List1.AddItem vbtab & rst.fields(f).name & vbtab & rst.fields(f).value Next List1.AddItem "--------------------" Set rsc = cn.openschema(adschemacolumns, Array(Empty, Empty, strtbl, Empty)) intcolcnt = rsc.recordcount intcolflds = rsc.fields.count For c = 1 To intcolcnt strcol = rsc.fields("column_name").value List1.AddItem vbtab & vbtab & "Column #" & c & ": " & strcol List1.AddItem vbtab & vbtab & "--------------------" For f = 0 To intcolflds - 1 List1.AddItem vbtab & vbtab & rsc.fields(f).name & vbtab & rsc.fields(f).value Next List1.AddItem vbtab & vbtab & "--------------------" rsc.movenext Next rsc.close List1.AddItem "--------------------" rst.movenext Next rst.close cn.close Set rst = Nothing Set rsc = Nothing Set cn = Nothing データビューウィンドウの使用 Visual Basic データビューウィンドウで Excel データソースへのデータリンクを作成すると 上述のコードから取得出来る情報がデータビューウィンドウに表示される 特に Jet プロバイダではワークシートと名前付き範囲の両方が テーブル リストに表示されるが ODBC プロバイダでは名前付き範囲而巳が表示される事に注意を要する 名前付き範囲を定義せずに ODBC プロバイダを使用した場合 テーブル リストは空に成る -10-
Excel の制限事項 Excel をデータソースとして使用する場合は Excel のブック 及び ワークシート内部条件に依る制約を受ける 制限事項には下記の様な物が有るが 此等に限定されない ワークシートサイズ :65,536 行 256 列 セル内容 ( 文字列 ): 32,767 文字 ブックのシート数 : 利用可能メモリに依り制限される ブックの名前数 : 利用可能メモリに依り制限される Excel 用 ODBC ドライバを使用すると 255 バイト以上の文字列は取得出来ない 関連情報 316934 Visual Basic.NET と ADO.NET を使用して Excel ブックのレコードの取得と変更を行う方法 295646 ADO を使用して ADO データソースから Excel にデータを転送する方法 246335 オートメーションを使用して ADO レコードセットのデータを Excel に転送する方法 247412 Visual Basic から Excel にデータを転送する方法 278973 [SAMPLE] ADO を使用して Excel ブックのデータの読み取り 及び 書き込みを行う方法 318373 Visual Basic.NET で GetOleDbSchemaTable メソッドを使用して Excel からメタデータを取得する方法 対象製品 此の資料は 以下の製品に付いて記述した物で有る Microsoft Visual Basic Learning Edition for Windows 6.0 Microsoft Visual Basic Professional Edition for Windows 6.0 Microsoft Visual Basic Enterprise Edition for Windows 6.0, 6.0 SP3 Microsoft Visual Basic for Applications 6.0 ActiveX Data Objects (ADO) 2.1, 2.1 SP1, 2.1 SP2, 2.5 Microsoft Data Access Components 2.1, 2.1 SP1, 2.1 SP2, 2.5 Microsoft Excel 2002 Microsoft Excel 2000 Microsoft Excel 97 for Windows Microsoft Excel for Windows 95-11-