当社ではある報告のExcel雛型があり、各社員が雛型に入力したExcelそのものを社内メールに添付させて受け取っていますが、今回集約のためのAccessを作ってそのExcelの各セル番地を一覧で別のExcelに集約したいと考えています(一括して処理したいExcelの数は500件程度)。
Excel雛型には、各社員には余計な操作をさせたくないということで、メニューバー等々をVBAで非表示にしてあり、×ボタンも使用不可にしています(「保存して閉じる」ボタンを別に用意)。
ところが、以下のコードを雛型のExcelのThisWorkbookに入れているばっかりに、集約用のAccessからExcelを操作する際に、自分で仕込んだメッセージ(「×ボタン使用不可」)が表示されてしまい、最初のExcelをうまく閉じることができず、繰り返し複数のExcelを処理することができません。
***************************
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If CloseMode = False Then
Cancel = True
MsgBox "×ボタン使用不可"
End If
End Sub
(※標準モジュールに
Public CloseMode As Boolean
を宣言して、別に用意した「保存して閉じる」ボタンをクリックしたときにCloseMode = Trueとしている。)
***************************
そもそもExcelを開く際にマクロを無効にして開くことができれば閉じるときにこんなことにならずに済むと思うのですが。。。
Application.AutomationSecurity = msoAutomationSecurityForceDisable も試してみましたが、うまくいかないようです。
また、変数「CloseMode」に対して、集約用のAccessからExcelを開いたときに値を入れることができればいいとも思うのですが、スコープについて調べたところでは難しいかなと感じています。
(※Excel雛型のコードはさわれないので「参照設定」を変更するのもできないと思われます。)
そんな小細工を施したExcelを何事もなく開いて中身のセル番地をコピーして閉じる方法をご存じでしたらご教授願います。
質問の内容もわかりにくくてすみません。。。
よろしくお願いいたします。<m(__)m>
No.1ベストアンサー
- 回答日時:
早速の回答ありがとうございました!
お礼が遅くなってすみません。
試したところ、うまくいきました。
この1行でよかったんですね。。。
いろいろ調べてみたんですが、これにはたどりつきませんでした。
本当にありがとうございます。<m(__)m>
参考URLも参考にさせていただきます。
No.2
- 回答日時:
Appliction.EnableEvents = False
以外では、
Application.Run <「CloseMode」を書き換えているサブルーチン>
として「CloseMode」を変更することかな。
http://officetanaka.net/excel/vba/tips/tips09.htm
早速の回答ありがとうございます。
Appliction.Runもまったく知りませんでしたので勉強になります。
参照設定とか難しいこと考えなくてもこれでいけるんですね!
ありがとうございました。<m(__)m>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
セルをマクロのボタンにしたい。
-
3つのオプションボタンの場所...
-
プロシージャからイベントをコ...
-
チェックボックスで指定出来る...
-
VBAのボタンの位置が変わって困...
-
CommandButtonのCaptionを変化...
-
ボタン
-
コマンドボタンやテキストボッ...
-
VB.NETです ラジオボタンの文...
-
フォームの再読み込み
-
VBS でユーザーからいくつかの...
-
TextBoxでEnterキーを押すと、...
-
【VBA】Accessを終了する前にメ...
-
VBA IE ダウンロード ダイアロ...
-
フォームから別のフォームを呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
Access VBA でデータペーストを...
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
-
Excel マクロ 閉じるボタン
-
ボタン
-
CommandButtonのCaptionを変化...
-
VB.NETでマウスクリックイベン...
-
ボタンの枠線の様なものを消したい
-
C#で動的に作ったtextboxを消す。
おすすめ情報