Access (VBA)

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

 
(その他 : Access 2010)
リモートAppで信頼できる場所を指定する方法 or ファイル間の値の受け渡し
投稿日時: 20/12/28 12:06:52
投稿者: 滝沢

・リモートAppサーバー内にaccessをインストールしており、各クライアントPCからは
 リモートAppで使用している。
・サーバーのAccessの「信頼できる場所」に「C:\AccApp」を指定している。
・サーバーの「C:\AccApp」に「test1.accdb」「test2.accdb」を置いている。
しかし、クライアントPCでリモートのaccessを開いてみると「信頼できる場所」が指定されていません。
このため、そのaccessファイルを初めて起動する時「セキュリティの警告 一部のアクティブ
コンテンツが無効にされました。クリックすると詳細が表示されます」の警告が出てしまいます。
これだけであれば「コンテンツの有効化」をクリックすれば済む話なので我慢できなくも無いんですが
これが表示された場合「test1.accdb」から「test2.accdb」を起動した時に行っている値の受け渡し
が行われなくなってしまいます。
 
受け渡しは下記のように行っています。test1上のコマンドボタンで、
test1のF_loginのtxt_liginidを、
test2のF_loginのtxt_liginidに渡す。
 
Dim Acc As Access.Application
 Shell PathName:="C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE _
  C:\AccApp\test2.accdb", WindowStyle:=vbMaximizedFocus
 Set Acc = GetObject("C:\AccApp\test2.accdb")
 Acc.Forms("F_login").Controls("txt_loginid").Value = Forms.f_login.txt_loginid.Value
Set Acc = Nothing
 
以上です。
正しく受け渡しできればどちらの問題解決でも良いです。
よろしくお願い致します。

回答
投稿日時: 21/01/04 11:36:25
投稿者: Suzu

引用:
正しく受け渡しできればどちらの問題解決でも良いです。

 
少なくとも、VBAでセキュリティーを下げる様な動作をさせる事は避けるべきと思います。
その為のメッセージなのですから。
 
別 accdb のファイル上のフォームは連結フォームなのですよね。
であれば、リンクテーブルにしては駄目なのでしょうか?

投稿日時: 21/01/10 22:12:02
投稿者: 滝沢

Suzu様
コメントありがとうございます。
 
>別 accdb のファイル上のフォームは連結フォームなのですよね。
>であれば、リンクテーブルにしては駄目なのでしょうか?
現状連結フォームではありません。
ログインIDなので、社員ごと異なる値を入力してしまいます。
連結フォームにして、その社員のIDを呼び出す方法が浮かばないです。
良い案ありますでしょうか。
 
よろしくお願い致します。

回答
投稿日時: 21/01/12 08:31:26
投稿者: Suzu

説明のしかたが悪かったです。
 
操作を行いたいフォームが連結フォームなのであれば
そのレコードソースとなるテーブルをリンクテーブルとして持てばよいのではないでしょうか

投稿日時: 21/01/13 20:54:01
投稿者: 滝沢

Suzu様
コメントありがとうございます。
 
改めて確認したら、ログインIDを入力するフォームは連結フォームでした。
ログインID、アカウント、ログイン時間等を記録しているテーブルとつながっています。
(仮にT_ログインとします)
 
このAccessファイル(test1.accdb)から、test2.accdbを起動します。
test2.accdbにT_ログインをリンクすることはできますが、たくさんログイン者がいる中で
今test2.accdbを起動した人のログインIDを見つける方法が浮かびません。
 
私が何か勘違いしている気がしてなりませんが、今のところこのような思いです。
ご確認のほどお願い致します。

回答
投稿日時: 21/01/14 09:53:22
投稿者: Suzu

引用:
このAccessファイル(test1.accdb)から、test2.accdbを起動します。
test2.accdbにT_ログインをリンクすることはできますが、たくさんログイン者がいる中で
今test2.accdbを起動した人のログインIDを見つける方法が浮かびません。

 
ログインの為なのですね。すみません、見落としておりました。
 
Shell 起動 を行っているのであれば、コマンドラインスイッチが使用できますので
cmd スイッチ を使用します。
 
 
Dim Acc As Access.Application
Shell PathName:="C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE _
  C:\AccApp\test2.accdb", WindowStyle:=vbMaximizedFocus
Set Acc = GetObject("C:\AccApp\test2.accdb")
Acc.Forms("F_login").Controls("txt_loginid").Value = Forms.f_login.txt_loginid.Value
Set Acc = Nothing
を ↓
Shell PathName:="C:\Program Files (x86)\Microsoft Office\Office14\MSACCESS.EXE _
  C:\AccApp\test2.accdb /cmd " & Forms.f_login.txt_loginid.Value , WindowStyle:=vbMaximizedFocus
 
の様に コマンドラインスイッチ cmd を使用し、ログインの値 を渡す様にします。
(オートメーション部分は不要です)
 
 
test2.accdb 側 の フォーム F_login
Load時に
 
Private Sub Form_Load()
    If Command() <> "" Then Me.txt_loginid = Command()
End Sub
 
として起動された ファイル側にて、command の有無 を確認し、あればセットするようにします。

トピックに返信