Access (VBA)

Access VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10 Pro : Access 2016)
パスワードをかけた他Accessファイルとの接続
投稿日時: 21/08/30 10:57:06
投稿者: moguraninjya

いつもありがとうございます!
 
パスワードをかけたAccess内のクエリをデータ加工用のAccessで
 
クエリデザイン→外部データベース:パスワードAccessフルパス→テーブル追加
 
で表示させたのですが、実際にクエリで加工しようとすると「パスワードが正しくありません」と拒否されてしまいます。
 
VBA等でスムーズにパス入力を省略し、データ処理を続ける方法はないかと思い質問させていただきました。
 
よろしくお願い致します。

回答
投稿日時: 21/08/30 11:55:32
投稿者: Suzu

現象の確認を行っていませんが、
 外部ファイルの、クエリのデザインを変えることはできないと思います。
 
 外部ファイルと言うことは、
   今のクエリ変更を接続しようとする接続
   それ以外の接続
     もあり得ますよね。
  それを考慮すると、構造を変更すると、問題が発生しやすくなりますよね。
  なので制限されている可能性が高いです。
 
  パスワード無しのファイルに対してであれば可能なのですか?
 
 
 外部接続としてではなく、
  VBA を使用し、DAOであるなら、OpenDatabase メソッドを使い ファイルを開き
    QueryDefs コレクションの 当該クエリのSQLを操作すれば 変更は可能でしょう。
  (でもその際には、排他モードにて開く必要があります。)
 
DBEngine.OpenDatabase メソッド (DAO)
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/dbengine-opendatabase-method-dao
 
 
 
私なら、パスワード付き の Access には、テーブルのみを持たせ、
 
今開いている ファイルに
  ・元ファイルのテーブルに対してのリンクテーブル
  ・リンクテーブルをソースとした クエリ を持たせます。

投稿日時: 21/08/30 15:21:37
投稿者: moguraninjya

Suzu様
 
お返事ありがとうございます!
 
外部接続で呼び出したクエリを利用して(リレーションさせて)、新しいクエリ(orテーブル)を作ろうとしていたのですが、難しいでしょうか・・・。
 
不特定の人に開いてほしくないデータベースなので、私が使うAccessファイルではパスワードを自動で入力できたらいいなと思ったのですが・・・。
 
パスワードのかかっていない場合でも検証しようとしたのですが、今度は
 
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
作成 - クエリデザイン で、「テーブルの表示」を何も指定せずに閉じます。
 
プロパティの「外部データベース」、初期値「(カレント データベース)」になっているのを
「access」のフルパスに書き換えます。
 
クエリの上半分で右クリックし「テーブルの表示」をクリック。
「テーブルの表示」で「クエリ」タブから「access」の表示させたいクエリを選択、←※ここでクエリが表示されない
「追加」をクリックして閉じます。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
 
※の現象が起きてしまいました・・・。
 
もう少し健闘してみます!!
 

回答
投稿日時: 21/08/31 09:50:11
投稿者: Suzu

これまたニッチな方法を採られていますね。。
 

引用:
プロパティの「外部データベース」、初期値「(カレント データベース)」になっているのを
「access」のフルパスに書き換えます。

 
パスワードはどこで指定する事になるのでしょうか?
ここで、ファイルのパスワードを含めないといけません。
 
引用:
パスワードのかかっていない場合でも検証しようとしたのですが、今度は
   [中略]
※の現象が起きてしまいました・・・。

新規クエリで行っても同じでしょうか?
 
 
何にしても、パスワード付きのファイルに対しての接続方法は
 
方法.1
 ・外部データベース は消して
 ・接続元アプリケーション に
     MS Access;PWD=パスワード;DATABASE=ファイルフルパス
 
方法.2
  SQLビューにて
  SELECT 〜 FROM テーブル名 IN "" [MS Access;PWD=パスワード;DATABASE=ファイルフルパス];
  とします。
 
IN 句 (Microsoft Access SQL)
https://docs.microsoft.com/ja-jp/office/vba/access/concepts/miscellaneous/in-clause-microsoft-access-sql
 
 
これらの方法は、リンクテーブルに比べ、速度的に不利だった記憶があります。
 
素直にリンクテーブルの方が扱いやすいと思いますよ。

トピックに返信