● DAOやADOで、閉じたExcelファイルを、閉じたまま、「読み書き」することについて | ||||||||||||||||
結論から言うと、読み込みだけでなく書き込みも同時にしたい場合は、「xls+DAO(orADO)」でやるか、もしくは、 | ||||||||||||||||
xlsmやxlsxを使うならDAOはやめて、ADOで、しかも「ACE系構文」でやるのがエラーや不都合が少ないかもです。(JET系の構文不可。) | ||||||||||||||||
そのほかは、閉じたまま処理できなかったり、面倒な不都合が出る可能性が上がってしまうかもです。 | ||||||||||||||||
なお、DAOやADOでのデータ書き換えでは、通常のUpdateメソッドでの書き換えだけでなく、ExecuteメソッドによるSQLを使っての書き換えも可能です。(もちろんファイルを閉じたまま) | ||||||||||||||||
※この表は、とりあえずの概要を急ぎでチェックしただけの結果ですので、多分、間違いがあると思います。 | ||||||||||||||||
なので、ご自分でも色々とチェックしてみてください。 | ||||||||||||||||
★ DAOでの読み書きの場合(環境:Excel2010_32bit+Windows10_64bit) | ||||||||||||||||
(すべて、ExcelがExcel2000の場合や、OSがWinXPやWin2000の場合は、異なってくるかもしれません。) | ||||||||||||||||
読みに行く先のExcelファイルの拡張子 | xls | xlsm、xlsx |
|
|||||||||||||
読み書き区分 | 読込 | 書込 | 読込 | 書込 | ||||||||||||
Dドライブのルート | OK | OK | NG | NG | ||||||||||||
Dドライブのフォルダ | OK | OK | 読み込み先のxlsmやxlsxが開いていればOK 開かれていないとNG |
読み込み先のxlsmやxlsxが開いていればOK 開かれていないとNG |
||||||||||||
Excelのオプションの「信頼する場所」の設定 | 不要 | 不要 | 不要 | 不要 | ||||||||||||
読みに行く先の表の形式 | ★1シートあたり1表の動的な表(タブでの名前使用)、 ★名前の定義で名前をつけた表、 ★1シートあたり複数の不規則な表やセル点在の状態、 のうち、 「Extended Properties」が下セルの設定内容でエラーが出ない場合、あるいは、実際に「読み書きする」コード(行)が実行された時にエラーが出ない範囲 (※読み込み先のExcelファイルは、いったん保存された状態に、新たに表やセルを追加しても、それはエラーで読み込まれないケースがあるかもしれません。よくわかっていません。すみません。) なので、特に「★1シートあたりに複数の不規則な表やセルが点在の状態」の場合は、実際に読み書きできる列や行がどこまでかをエラーを出しながら確認する必要があります。 |
左に同じ | 左に同じ | 左に同じ | ||||||||||||
「Extended Properties」の設定値 | Excel 8.0
(列内でデータ型が違う?と空白として読んでしまう場合あり) Excel 8.0;HDR=YES;IMEX=1 など。 ※設定値を""で囲むか囲まないかは、ADOのバージョンで違うかも?よく調べていませんので、エラーの出ないほうでやってください。すみません。 |
Excel
8.0 など。 |
Excel
8.0
(列内でデータ型が違う?と空白として読んでしまう場合あり) Excel 8.0;IMEX=1 Excel 8.0;HDR=Yes;IMEX=1;Readonly=False など。 ※なぜか、12.0ではないので注意 |
Excel
8.0 など。 ※なぜか、12.0ではないので注意 |
||||||||||||
★ ADOでの読み書きの場合(環境:同上) | ||||||||||||||||
(すべて、ExcelがExcel2000の場合や、OSがWinXPやWin2000の場合は、異なってくるかもしれません。) | ||||||||||||||||
読みに行く先のExcelファイルの拡張子 | xls | xlsm、xlsx | ||||||||||||||
読み書き区分 | 読込 | 書込 | 読込 | 書込 | ||||||||||||
Dドライブのルート | OK | OK | NG | NG | ||||||||||||
Dドライブのフォルダ | OK | OK | OK | OK | ||||||||||||
Excelのオプションの「信頼する場所」の設定 | 不要 | 不要 | 不要 | 不要 | ||||||||||||
読みに行く先の表の形式 | ★1シートあたり1表の動的な表(タブでの名前使用)、 ★名前の定義で名前をつけた表、 ★1シートあたり複数の不規則な表やセル点在の状態、 のうち、 「Extended Properties」が下セルの設定内容でエラーが出ない場合、あるいは、実際に「読み書きする」コード(行)が実行された時にエラーが出ない範囲 (※読み込み先のExcelファイルは、いったん保存された状態に、新たに表やセルを追加しても、それはエラーで読み込まれないケースがあるかもしれません。よくわかっていません。すみません。) なので、特に「★1シートあたりに複数の不規則な表やセルが点在の状態」の場合は、実際に読み書きできる列や行がどこまでかをエラーを出しながら確認する必要があります。 |
左に同じ | 左に同じ | 左に同じ | ||||||||||||
「Extended Properties」の設定値 | Excel 8.0
(列内でデータ型が違う?と空白として読んでしまう場合あり) Excel 8.0;HDR=YES;IMEX=1 など。 ※設定値を""で囲むか囲まないかは、ADOのバージョンで違うかも?よく調べていませんので、エラーの出ないほうでやってください。すみません。 |
Excel
8.0 など。 |
(ACEエンジン系構文での操作の場合) Excel 12.0 Excel 12.0;IMEX=1 Excel 12.0;HDR=Yes;IMEX=1;Readonly=False (JETエンジン系構文での操作の場合) ※見に行く先のファイルが閉じてしまっていると、=開かれていないと、ダメっぽいです。 Excel 8.0 (空白で読み込まれる部分あり) Excel 8.0;HDR=YES;IMEX=1 (空白なし) など。 |
Excel
12.0 など。 |