Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
Accessから開いているエクセルを閉じる
投稿日時: 19/03/27 22:18:35
投稿者: hirokiwps

Accessのフォームより指定のエクセルファイルが開いているかの確認をして、もし開いていたら閉じる指示をかけたいです。

回答
投稿日時: 19/03/28 09:30:28
投稿者: なと

作成依頼は禁止されています。
 
疑問を単語に区切って「ACCESS Excelファイル 開いている 閉じる」などとして検索しては?
 
結構たくさんヒットしましたよ。

回答
投稿日時: 19/03/28 10:11:54
投稿者: Suzu

こんにちは。
 
GetObject 関数 を使い、引数にファイルのフルパスを渡し
  取得できれば、開いている
  取得できなければ、 閉じている
 
と判断できます。
 
開いているのであれば、GetObjectで取得できるのは、WorkBookです。
 
取得できた オブジェクトに対し、Close を行えば良いです。

回答
投稿日時: 19/03/28 11:13:57
投稿者: hatena
投稿者のウェブサイトに移動

[quote="Suzu"]GetObject 関数 を使い、引数にファイルのフルパスを渡し
  取得できれば、開いている
  取得できなければ、 閉じている
 
と判断できます。
[/quote]
]GetObject 関数 を使い、引数にファイルのフルパスを渡して実行すると、すでに開いている場合は、そのブックを取得しますが、開いていない場合は、非表示でそのブックを開いてしまいます。
 
GetObject(, "Excel~")だけで無く、GetObject(ファイル名)も活用しよう - Qiita https://qiita.com/nukie_53/items/12cc0a3fc295a446a045
 
下記の方法でブックが開いているか確認して、開いてなければ GetObject(ファイル名) で取得して閉じるというようにした方がいいかと。
 
ブックが開かれているかチェックする | Excel作業をVBAで効率化 https://vbabeginner.net/%E3%83%96%E3%83%83%E3%82%AF%E3%81%8C%E9%96%8B%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B/

回答
投稿日時: 19/03/29 11:38:44
投稿者: Suzu

hatena さんの引用:
GetObject 関数 を使い、引数にファイルのフルパスを渡して実行すると、すでに開いている場合は、そのブックを取得しますが、開いていない場合は、非表示でそのブックを開いてしまいます。

 
すみません。そうですよね。
複数プロセスの事ばかりに頭が行ってしまいました。。
 
・複数プロセス
・複数人が同時に同じファイルを開く
 
を考慮する必要があるならどうするかな、、
テストする時間が取れないです。。すみません。

投稿日時: 19/03/31 14:04:26
投稿者: hirokiwps

ご返信が遅くなり申し訳ありません
 
皆様にいただきましたアドバイスを元にチャレンジいたします。
 
ありがとうございました。