Help us understand the problem. What is going on with this article?

小ネタ:パスワード付きのAccessに接続する|Power Query

OLE DB、Accessになじみのある方には秒殺だと思いますが、僕は発想もなかったので書き残しておきます。
恐らく、OLE DB接続の方でパスワード処理に対応している接続先には、同じ手口が使えるのではないかと思います。

読み取るaccdbについて

Accessのパスワードといっても、2種類あって、「以前の暗号化方式」でないとだめなのです。
「以前の暗号化方式」というのは下記のAccessのオプションにて設定します。
image.png

接続例

GUIの呼び出しは下記の画面から。接続文字列をそのまま貼りたい場合はその方が便利でしょう。
image.png

僕は接続文字列自体に不慣れだったので、レコード型で探り探り書いたところ、下記ようなコードになりました。
この例でのパスワードは「abc」です。

let
    Source = OleDb.Query(
                    //いわゆる接続文字列。伝統的な、セミコロン区切りの文字列でも通ります。
                    [
                      Provider="Microsoft.ACE.OLEDB.12.0",
                      Data Source="C:\Users\Public\Documents\TestDatabase.accdb",
                      #"Jet OLEDB:Database Password" ="abc"
                    ],
                    //SQLを記述。下記程度のは通りました。文字列はシングルクウォートで。
                    "SELECT 仕訳帳.借方, Sum(仕訳帳.金額) AS 金額の合計
                     FROM 仕訳帳
                     WHERE 仕訳帳.日付<=#2015/12/31# AND 仕訳帳.借方>='500'
                     GROUP BY 仕訳帳.借方;
                    "
             )
in
    Source

一応、実行結果。データ型はAccessの通りですね。
image.png

テスト環境

  • Office365のExcel(バージョン1911 ビルド12228.20250クイック実行)
  • 同じくAccess

なお、下記をインストール済みです。PowerShellからADO.NETで接続するのには必要だったので、入れていました。本件には必須ではないかもしれません。
Download Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント from Official Microsoft Download Center

おまけ:パスワードつきのExcelはどうなのか。

パスワードをクエリに入れとけば、接続できる――という例にはいまだお目にかかったことがありません。
調べた限り、OLE DBでもできないようです。
なので、現状は、VBAか何かで読み取り対象のブックを開いた状態で、クエリを実行するしかないようです。
ちなみに、Excelの書き込み専用パスワードだけなら、Power Queryは普通に接続できます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした