アプリ版:「スタンプのみでお礼する」機能のリリースについて

作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して
上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。

(1)ThisWorkbookのOpenプロシージャでファイルを読み取り専用状態に設定
(2)ThisWorkbookのBeforeSaveプロシージャで
   読み取り専用を解除→上書き保存→読み取り専用状態に再設定

   Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

     '上書き保存モードを解除
     Cancel = True

     '上書きしますか?のコメントを非表示に設定
     ActiveWorkbook.Saved = True

     'ファイルが読み取り専用であった場合は以下の処理を実行
     If ActiveWorkbook.ReadOnly Then

       'ブックの読み取り専用設定を解除
       ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True

       '上書き保存を実行
       Application.DisplayAlerts = False
       Application.EnableEvents = False
       ActiveWorkbook.Save
       Application.EnableEvents = True
       Application.DisplayAlerts = True

       'ブックを読み取り専用に設定
       ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly

     'ファイルが読み取り専用でなかった場合は以下の処理を実行
     Else

       '上書き保存を実行
       Application.DisplayAlerts = False
       Application.EnableEvents = False
       ActiveWorkbook.Save
       Application.EnableEvents = True
       Application.DisplayAlerts = True

     End If

   End Sub


上記のマクロで上手くいきそうなのですが、下記2点が解決できずに困っております。

(1)上書き保存ボタンをクリックすると下記のメッセージが毎回表示されてしまいます。
  『読み取り専用です。コピーを保存するには名前を付けて保存して下さい。』
  OKボタンをクリックしたりEscやEnterキーを押下さえすればこの警告メッセージを回避でき
  以後は思った通りの処理を行えるのですが、できればこのメッセージを表示したくない。

(2)上書き保存のために読み取り専用を解除した際、他のオペレーターがエクセル起動中、
  または上書き保存中であった場合、エラーが発生してしまうことと思われます。
  この問題の解決策をご存知の方、是非教えて下さいますよう宜しくお願いします。


当初は共有ブックとしての運用の方向で進めていたのですが、既に2人のオペレーターが
ファイルにアクセスしている状態で、3人目のオペレーターがファイルを開くと読み取り専用と
なってしまったり、保存時に時間がかかり過ぎたり、保存時のエラーが頻繁に発生したりといった
状況でしたので共有ブックとしての運用は諦めました。(シート50枚、ファイルサイズ3.5MB程度)

使用PCはXPでExcel2003です。以上、宜しくお願いします。

A 回答 (3件)

>ただ、全てのオペレーターにアクセスのライセンスを取得させるのが簡単な状況でないため、


>アクセスの活用ができない状況にあります
エクセルからアクセスのテーブルの操作が可能です。
すべてのユーザーにアクセスのライセンスがなくても運用できる可能性もあります。
例えば
1台のパソコンにアクセスが入っているとして
データベースの作成、テーブルの作成など行って、共有できるサーバーのフォルダにデータベースの
ファイルを作成しておきます。
ほかのユーザーは、エクセルを使って データを追加したり、検索やデータの抽出を行う作業専門に
します。
データベースの操作は 大まかに
1、データの検索・抽出
2、データの追加
3、データの修正
4、データの削除
に分けられますが。

エクセルからアクセスのテーブルの内容を修正したり削除したりする時だけは運用に注意してください。
集計したいデータをエクセルで抽出、エクセルで内容を書き換えた後にアクセスのテーブルに反映させる
といった手順ですが。
仮に Aさんがあるレコードのデータを修正したいと思ってエクセルに取り出して作業中に
Bさんも同じレコードに修正の作業に入ってしまった。Bさんが先に作業を終えてアクセスのテーブルに
保存。
その後に、Aさんが作業を終わってアクセスのレコードを上書きして、Bさんの作業内容が消える
という可能性です。
そのあたりを工夫すればいかがでしょうか?
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい、誠に申し訳ございませんでした。
また、貴重なご意見を頂きありがとうございました。
アクセスでの運用も視野に入れて今後の運用について
検討してみます。

お礼日時:2011/06/07 10:38

Excelの「変更履歴」機能というのがアル。


http://allabout.co.jp/gm/gc/297720/
これを読んで、使えないか考えてみては。
ーー
読み取り専用ファイル
http://www.kenzo30.com/ex_kisopoint/onepoint_son …
 上書き保存ができないファイルです。
開いた跡でyp見tp理専用属性を返すことは出来ないでしょう。
上記に
上書きしたものを保存する時は、別のファイルとして新しい名前を付けて新規に保存します、と在るように
そのようにする仕掛けを考えたらどうでしょう。
ーー
一般にエクセルは自分で使うソフトであり、機密や権限などの体系的な組み込みはなされていない(目指してない)ソフトです。
素人衆が、十分勉強もしないで、あれもこれもとか、なんでもエクセルとかの路線で色々質問も多いが、「木に縁りて魚を求む
」の類ではといつも思う。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。確かにエクセルでの運用には無理がある状況です。
考え方を変えて今後の運用方法について再度 検討してみることにします。

お礼日時:2011/06/05 09:04

質問に対する直接の回答ではありません。


>既に2人のオペレーターが
>ファイルにアクセスしている状態で、3人目のオペレーターがファイルを開くと読み取り専用と
>なってしまったり、保存時に時間がかかり過ぎたり、保存時のエラーが頻繁に発生したりといった
>状況でしたので共有ブックとしての運用は諦めました。(シート50枚、ファイルサイズ3.5MB程度)
複数のユーザーから同時編集が必要になった時点でエクセルファイルでのデータ管理はあきらめましょう。
元々エクセルはスタンドアロンの上に使われるアプリケーションです。
複数のユーザーからデータの編集を行うのならばアクセスなどデータベースの活用に考え方を変えるべきです。

ファイルを開くときに 通知 を設定するなどで解決方法があるかもしれませんが
仮に エクセルファイルを上書き保存できたとして、先にほかのユーザーが編集した内容の上に上書き保存してしまったらどうでしょうか?
シート50枚というのも使いにくくないですか。
    • good
    • 0
この回答へのお礼

早速のご回答、ありがとうございました。今後の運用について検討をしてみます。
ただ、全てのオペレーターにアクセスのライセンスを取得させるのが簡単な状況でないため、
アクセスの活用ができない状況にあります。あと、よく考えてみたのですが、この方法では
上書き保存した際に漏れが生じてしまうのですね・・・。参考になりました。

お礼日時:2011/06/05 08:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A