以下のようなVBAを作成したいのですが、糸口が見つかりません。
ヒント等や解説webの紹介でもかまいませんのでお願いいたします。
共通で使用するエクセルファイルがあります。
(1)ファイルの上書き保存を禁止したい
・今あるフォルダ内での上書き保存のみ禁止としたいです
・別フォルダに一度でも保存していた場合の上書き保存はOKです
つまり共通ファイルを上書きするのはダメですが、自PC等に名前をつけて保存等をしていた場合の上書き保存はOKとしたいです
(2)ファイルを開いている時間を5分と制限したい(5分経過したら強制終了)
・今あるフォルダ内での時間制限としたいです
・別フォルダに一度でも保存していた場合は時間制限なしとしたいです
つまり共通ファイルを開きっぱなしなのはダメですが、自PC等に名前をつけて保存等をしていた場合は制限なしとしたいです
個々のVBAは多少webなどでわかるのですが、こうだったらこうという記述がよくわからずにおります。
お手数をおかけ致しますが、よろしくお願い申し上げます。
No.4ベストアンサー
- 回答日時:
No3です。
No2様の例をそのまま利用するなら、こんな感じ
Private Sub Workbook_Open()
Const filePath = "\\......" '//共用ファイルのパス
If ThisWorkbook.Path <> filePath Then Exit Sub '//パスが違う場合は終了
Application.OnTime Now + TimeValue("00:01:00"), "Macro1"
End Sub
おはようございます。再度のご教授ありがとうございます。
ようやっと意味がわかりました。ありがとうございます。
また作業も行ってみましたが、やりたいことが再現できました。
本当にありがとうございます。勉強になりました。
No.3
- 回答日時:
同じような回答ですが…
(1)基本的にはNo1様のおっしゃるように権限設定で行うのが良いと思われます。(一般ユーザグループと権限のあるユーザグループに分ける)
BVAで行っても、ご質問のような機能の場合だと、一度ローカルに保存したデータを不心得ものがメインに上書きすることが可能になってしまいますから。
(2)制限をかけるときと外すときの違いは、ThisWorkbookのPathで判断するのがよさそう。保護するファイルは決まったPathにあるでしょうから、それ以外の場合は、マクロを実行しないか、またはマクロを消去してしまう。
マクロの消去についてはこのあたりをご参考に…
http://officetanaka.net/excel/vba/vbe/07.htm#sam …
ご回答ありがとうございます
1)の権限については私自身がまだあまり知識を持ち合わせておりませんので調べてみます。
ただ今回はfujillinさまがおっしゃるような不心得モノについては考慮しておりません。
回避したいのが「うっかり上書きしてしまった」に関してだけであることと、
保存してある場所が通常のユーザーならまずたどり着けないような場所にあるからです。
オリジナルも保存してありますし、この点はあまり気にしていません。
2)に関しては、おそらくそうであろうと考えておりました。
例として、回答者hallo-2007さまの
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:01:00"), "Macro1"
End Sub
に、どのように組み入れるのかがよくわからなかったのです。
少ない知識での予想なのですが・・・
Private Sub Workbook_Open()
On Error GoTo Err_chek
パスを取得してーうんたらかんたら←ここがわからない
Application.OnTime Now + TimeValue("00:01:00"), "Macro1"
Exit Sub
Err_chek:
このシートをアクティブにする←ファイル名が変更されていた場合を考慮する方法がよくわからない
End Sub
多分こうなんだろうなぁとは考えているのですが、根本から間違っていたらすみません。
お手数をおかけ致しますが、もう一度ご教授願いたいです。
No.2
- 回答日時:
(1)ですが、フォルダ内の全てのファイルに読み取り専用というのであれば
そのフォルダのプロパティで 読み取り専用に チェックで出来ます。
特定のエクセルファイルというのであれば、ファイルを保存するときに
パスワードを設定して、管理者のみが書き込みのパスワードを知っている といった使用方法が良いと思います。
(2)ですがVBAでThisWorkBookのモジュールに
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:01:00"), "Macro1"
End Sub
標準モジュールに
Sub Macro1()
MsgBox "閉じます"
ThisWorkbook.Close
End Sub
をコピィして試してみてください(最初は、適当なサンプルで試してください)
上記コードではファイルを開いた時間の1分後にMacro1のコードを実行
Macro1ではファイルを閉じます。
あくまでもファイルを開くときにマクロを無効で開かれると意味ありませんが。
ご回答ありがとうございます。
ご指示頂いた件ですと「別フォルダに一度でも保存した場合」でも、
同様の制限(上書きできない・時間制限あり)かと思われます。
知りたいのは「こうだったらこう」という記述の部分になります。
ご回答ありがとうございました。
No.1
- 回答日時:
こんにちは。
通常、ファイルの更新権限を設定する場合は
VBAを使用するのではなく
通常はそのフォルダやファイルのプロパティにて
セキュリティ設定で対応するものだと思います。
(更新権限をOFFにし、参照権限のみとする)
また、更新不可に設定したのであれば
開く時間の制限をかける必要もないかと思います。
あるユーザが何分ファイルを開いていようが、別のユーザも同時に
ファイルを読み取りで開くことができるのですから
更新権限のみ制御すればいいのではないでしょうか。
どうしても5分の制限をかけたいのであれば
ブックオープン時(Private Sub Workbook_Open)に
マクロ実行し、
5分間実行待ち(Sleep (300000))した後で
ブックを閉じる処理(Workbooks("Book1.xlsm").Close)を実行すれば
よいとか思いますが、負荷もかかりますし、
私はあまりお勧めしません。
以上、ご参考まで。
ご回答ありがとうございます。
通常であればそうすればよいのかと思いますが、残念ながら、
・参照のみではない
・ファイルは1ユーザーのみの制限がかけてある
という条件下となっております。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
家の中でのこだわりスペースはどこですか?
自分の家で快適に過ごすために工夫しているスペースはありますか? 例)ベランダでお茶を飲むためのカフェテーブル ゲーミングに特化したこだわりのPCスペース
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
とっておきの手土産を教えて
お呼ばれの時や、ちょっとした頂き物のお礼にと何かと必要なのに 自分のセレクトだとついマンネリ化してしまう手土産。 ¥5,000以内で手土産を用意するとしたらあなたは何を用意しますか??
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
EXCELマクロ 保存禁止させるには?
Excel(エクセル)
-
Excelの上書き保存を禁止させる
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
フォルダ内のexcelファイルを順...
-
エクセル(マクロ)のファイル...
-
【Excel VBA】ファイル名が一...
-
フォルダ内のブック全部にパス...
-
【マクロ】名前を保存する際に...
-
データ参照先が別ファイルの場...
-
フォルダ内の複数ファイルの一...
-
vba初心者です。 質問です。 毎...
-
Accessのaccdbファイルを起動で...
-
accessフォルダを移動したらフ...
-
Excelファイルがマクロを含むか...
-
エクセル 複数ファイルの一括...
-
秀丸:あらかじめ設定した複数...
-
VBAでワークブックの名前を変数...
-
エクセルのマクロについて教え...
-
新規 xlsmファイルにする方法...
-
エクセルのシートの数を数えた...
-
ファイルを開かずにマクロを実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
【マクロ】名前を保存する際に...
-
ファイルを開かずにマクロを実行
-
【Excel VBA】ファイル名が一...
-
フォルダ内のブック全部にパス...
-
フォルダ内のexcelファイルを順...
-
エクセルのシートの数を数えた...
-
VBAでワークブックの名前を変数...
-
データ参照先が別ファイルの場...
-
エクセル(マクロ)のファイル...
-
vlookup関数の引数を変数で指定...
-
エクセル 複数ファイルの一括...
-
ファイルの保存場所を変えたら...
-
accessフォルダを移動したらフ...
-
リンク切れチェックを行うマクロ
-
EXCELマクロを無効にして開く方法
-
Accessのaccdbファイルを起動で...
-
エクセルのxls形式からxlsx形式...
-
エクセルマクロ 異なるファイ...
おすすめ情報