Access (VBA) |
|
(Windows 11 Home : Microsoft 365)
フォームからエクセルのファイルを開く方法
投稿日時: 24/09/07 11:57:24
投稿者: yurappy
|
---|---|
お世話になります。
|
投稿日時: 24/09/07 13:32:53
投稿者: Suzu
|
|
---|---|
OLEオートメーションを使用する理由は何でしょうか?
引用: ここで言うマクロは、Accessのマクロ?ExcelのVBE画面? しかも、ダイアログボックス?? ダイアログボックスがいきなり表示されるのですか? それは、Excelが表示させてる? それとも、Accessが表示させてる? そこには、何が表示されているのですか? 引用: ロックファイル laccdbファイルとは?laccdbファイルが消えずに残るとき https://www.helpforest.com/access/ob_db/ac010006.htm この、laccdb ファイル または、ldb ファイルの事でしょうか? アクセスを閉じるとは、アクセスのウィンドの右上の×を押したという事? それとも、別の方法? 引用: と、併せて推察すると、Accessを閉じる操作を行おうと操作をしようとするけど 操作が受け付けられない という事でしょうか? 考えうるのは、 今、画面が複数開いており、その中に、 Accessが表示させている画面があり、それが閉じられていないので、 当該 ファイルを 閉じようとしても、閉じる操作を受け付けていない状況 ALT + TAB で アクティブなウィンドウを切り替えてみて 上記の 画面が無いか 確認しましょう。 引用: ・別の xlsx を指定してみて同様になるか ・別の xlsm を指定してみて同様になるか ・その xlsm をエクスプローラーからダブルクリックで開いたらどうなるか 等、何に起因するのか試す事は可能です。 |
投稿日時: 24/09/07 15:48:02
投稿者: hatena
|
|
---|---|
Access VBAでエクセルを操作するということでなく、単にエクセルブックを開くだけというなら、Suzuさんの回答のShellかハイパーリンクで開くというのでいいと思います。
引用: これに関しては、8月26日の更新でセキュリティが強化されたのが原因かも知れません。(下記リンク参照) Access365更新後の不具合 - Microsoft コミュニティ https://answers.microsoft.com/ja-jp/msoffice/forum/all/access365%e6%9b%b4%e6%96%b0%e5%be%8c%e3%81%ae/738f8e6b-7caa-41d6-bb5a-4d802839c60b 私も最近急に同様の現象に見舞われて、上記を参考に、 トラストセンターにて、起動するAccessファイルのフォルダを「信頼できる場所」に追加する ことで正常動作するようになりました。 |
投稿日時: 24/09/08 10:05:55
投稿者: yurappy
|
|
---|---|
Suzuさま
引用: を試してみましたら、アクセスが入力用のエクセルとリンクしているため、エラーの表示がされて「ファイル名.xlmsは編集中のためロックされています。」と表示されてしまいました。 試しに次ぎの様に書いて試しましたら、アクセルの画面が消えて何も表示されなくなりました。 If MsgBox("終了してよいですか。", vbYesNo + vbDefaultButton1, "確認") = vbYes Then Application.Quit Shell "Excel.exe ""C:\フォルダ名\フォルダ名\フォルダ名\ファイル名xlsm""" Exit Sub End If もしかしてと思って、エクスプローラーでみたら、また「 ファイル名.laccdb 」 の様な鍵マークのついたファイルが残っていていました。 アクセルで、VBAを利用しないと、鍵マークのファイルが消えてアクセルがきれいに終了できます。 新規にアクセスのファイルを作って、Suzuさま が教えてくださった Shell "Excel.exe ""C:\フォルダ名\フォルダ名\フォルダ名\ファイル名.xlsm""" を試したら、無事にエクセルの開くことが出来ました。 素人の考えでお恥ずかしいのですが、アクセルを閉じてその直後にエクセルのファイルを開けば良いのかと思いますが、上記のアクセルを閉じるコードの後に追記したら動かなかったので悩んでます。 よい方法がございましたら、教えてください。 よろしくお願いいたします。 |
投稿日時: 24/09/08 12:45:10
投稿者: Suzu
|
|
---|---|
ファイル名.laccdb
引用: についても、前述の 正常終了ができていない事が 原因の可能性もあります。 リンクを削除してから、終了という方法もありますが、 正常終了ができていない 事 が 不具合であり、その対処の為にリンク削除というのは 臨時的な対処としてはアリとは思いますが、正常終了できる様にする方が良いと思います。 ですので、 MSの対応を待つなり、更新のロールバックを行い、正常に終了する様にしてから Excel との 連携を検討された方が、シンプルだと思います。 まずは、UpDateを実行してみて解消されるか。 解消されないのであれば、ロールバックを行ってみてはいかがでしょうか。 |
投稿日時: 24/09/08 13:19:03
投稿者: yurappy
|
|
---|---|
Suzuさま
引用: の、回避策1の 信頼出来る場所 と言うのがわからず、回避策2 のコマンドでの方法を試してみたのですが、同じ状態でしたので、引き続き試しているところです。 引き続き、私もネット検索したりして試してみます。 親切にありがとうございます。 よろしくお願いいたします。 |
投稿日時: 24/09/08 14:58:29
投稿者: Suzu
|
|
---|---|
引用: 古い バージョン が ダウンロードされ、インストールされるはずなのですが それらは、実行され、古いバージョンにはなったのですか? それを確かめたうえで、同じ状態とおっしゃっていますか? 引用: データベースを信頼するかどうか決定する https://support.microsoft.com/ja-jp/topic/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4%BF%A1%E9%A0%BC%E3%81%99%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E6%B1%BA%E5%AE%9A%E3%81%99%E3%82%8B-828ce4e9-1f38-4f4b-89c4-81bb0fcda8a4 信頼できる場所を指定する |
投稿日時: 24/09/08 15:10:14
投稿者: yurappy
|
|
---|---|
Suzuさま
引用: ダウンロードが始まって再起動したので大丈夫かと思いましたが、しっかりと確認せずにすみませんでした。 後ほど、調べて確認してみます。 引用: 調べ方も、リンクまで教えてくれてありがとうございます。 後ほど調べて試してみます。 明日から11日まで出張で、12日以降になるかもしれないですが、結果をご報告(投稿)いたします。 よろしくお願いいたします。 |
投稿日時: 24/09/08 15:26:42
投稿者: hatena
|
|
---|---|
引用: AccessでVBA実行後、Accessファイルを閉じても、ロックファイル(*.laccdb)が残り、再度開くことができないという現象は、私の紹介したリンク先の現象だと思います。 対処法としては、まずは、 リンク先の回避策1を試みる それでだめなら、回避策2を試みる ということになります。 回避策1は、公式のリンク先が紹介されていますが、簡単に説明すると下記のような手順です。 問題のAccessファイルを開く 「ファイル」をクリック 「オプション」をクリック 「トラストセンター」をクリック 「トラストセンターの設定」をクリック 「信頼できる場所」をクリック 「新しい場所の追加」をクリック 「参照」をクリック(フォルダー選択ダイアログが開く) 問題のファイルが置いてあるフォルダーを選択する 「OK」をクリック 「OK」をクリック 「OK」をクリック 以上です。 私の場合はこれで解決しました。 これでだめなら回避策2を試みてください。 |
投稿日時: 24/09/08 16:22:26
投稿者: yurappy
|
|
---|---|
hatenaさま
引用: 再度、コマンドでの方法を行いまして確認後、動作を行いましたら ロックファイル(*.laccdb) が残らずに終了出来る様になりました。 そして、エクセルのファイルを起動する件ですが、メッセージボックスを使用せずに次のコードで終了と起動だけはできました。 Shell "Excel.exe ""C:\フォルダ名\フォルダ名\フォルダ名\ファイル名.xlsm""" Application.Quit この後、メッセージボックスが開いて確認ボタンをクリックすると動作するように試してみます。 わかりやすくアドバイスいただいて、とても助かって心強いです。 ほんとうにありがとうございます。 よろしくお願いいたします。 |
投稿日時: 24/09/09 17:23:05
投稿者: yurappy
|
|
---|---|
hatenaさま
引用: こちらの現象が、回避策2の操作をやり直したら回避出来まして、VBAのコードを考えていたアクセスを終了してからエクセルを起動する順番でなくて、Suzuさまから教わりました エクセルを起動するコードを 先に書いてから、アクセスを終了するようにしたら、思うように動きました。 教わって修正し動いたコード If MsgBox("終了してよいですか。", vbYesNo + vbDefaultButton1, "確認") = vbYes Then Shell "Excel.exe ""C:\フォルダ名\フォルダ名\フォルダ名\ファイル名xlsm""" Application.Quit Exit Sub End If 順番や書き方が正しいのか、きちんと理解できていなくて申し訳ございませんが、動くようになってお礼申し上げます。 助けていただいて本当に助かりまして、感謝申し上げます。 ありがとうございました。 困った時には、またお願いいたします。 ほんとうに、ありがとうございました。 よろしくお願いいたします。 |