MS Access

ExcelブックをAccessで読みたいときにリンクテーブルを使わない方法があったとは・・・知らなかった

投稿日:2014年6月23日 更新日:

とある業務で、Access内でExcelブックをリンクテーブルで読む・・・という使い方をしてきた。
(AccessのmdbはNASにおいて共有している。Excelのxlsも同じく)

これはこれで便利なのだが、ユーザーから、ひとりの人がAccessを使っている間、もう一方の人がリンクテーブル先のブックをExcelで開こうとすると「編集のためロックされています」のメッセージが出る。
Excelは読み取り専用でしか開けないので、編集するケースはないのだが、Accessではそういってくる。
リンクテーブルを読んであれこれする業務は月に数度しかないのに、誰かがAccessのmdbを開いているだけでもその間、もう一方は閉じるのを待っていなければならない。これを何とかして欲しい・・・と、ずっと要望を受けていた。
しかし、いろいろ調べては見たものの、それを現在使っていなくてもExcelブックをリンクテーブルにしているだけでロックされるのは、なんともならないとずっと思っていて、そのように説明していた。

けども、以下のようなやり方があったとは。

リンクテーブルにせずにExcelシートをクエリで使う。 | MS Access Scrapbook

早速このやり方を使ってみた。
自分の業務だと、こんな感じ。

'Excel
SELECT * FROM [EXCEL 12.0;HDR=Yes;
DATABASE=C:\Users\Documents\スケジュール.xlsm].[全体$];

'CSV text
SELECT * FROM [Text;HDR=Yes;
FMT=Delimited;DATABASE=c:\test].[rakuraku_item.csv];

クエリを実行中は、確かに今まで通りになるが、実行していない間は、これまでのようにExcelで該当ブックを開こうとしても、ロックのメッセージが出なかった。
しかも、一方のExcelブックを現在編集中で保存していなくても、Accessでクエリを実行すると何事もなく開き、それまで編集中の内容がクエリに表示されている・・・!

これは役立つ情報だ!!
情報源の方に感謝!

2021/4/14(水)追記:
Excelファイルに加え、CSVテキストファイルをクエリとして読むコードを追加!

-MS Access

執筆者:

関連記事

no image

DoCmd.GoToRecordよりもMe.SaveよりもMe.Refresh

Accessで、一旦フォーム上のレコードを保存したいとき、 Me.Save とやってもレコードが保存されない。 そこで、今までは、DoCmd.GoToRecordで無理矢理レコードを移動して保存してい …

no image

Accessで、見積書のような「サブフォームつきフォームを丸々コピー」する方法・・・見つけるのに、四苦八苦。

最初、複雑でかつ読み取り専用のクエリを元にしたフォームをコピーしようとしていたために、 acCmdPasteAppendのラインで「コマンドまたはアクション”追加貼り付け”は無効です」のエラーが出て、 …

no image

Accessで指定テーブル内を全文検索

今まで、特定のフィールド内でしか検索できないものだと思っていた・・・。 Accessのリボンの検索ボタンをクリックして表示されるダイアログボックス内の「探す場所」で特定のテーブル/クエリ/フォーム名か …

no image

Accessのパラメータは クエリのみならず、SQL文字列でも できるとは。。。

以下のリンクが参考になった。 パラメータの設定方法がわかりません。パラメータの設定を行ってい… – Yahoo!知恵袋 以下は、自分の業務で作成したコード。 Dim dbs A …

もう何度もAccessの集計クエリの作成をミスって怒られている

私が悪い。反省。 自戒のメモ。 Accessの集計クエリに条件を加えたい場合、その条件をどこに書くかによって結果が全く違ってくる。 それをわかってはいるのだが・・・最大やら演算やら、細かいことを同時に …