プロが教える店舗&オフィスのセキュリティ対策術

 Accessで作成中のアプリケーションに、他の作成済みAccessアプリから、
流用したいオブジェクトをインポートしようとするのですが、うまくいきません。

 具体的には、作成中のAccessアプリ(以下「アプリA」と表記します)にて、
ファイル(F)-外部データの取り込み(G)-インポート(I)を選択し、
開いたインポートウィンドウから、作成済みのAccessアプリ(以下「アプリB」
と表記します)を指定し、オブジェクトのインポートウィンドウから、
取り込みたいオブジェクト(フォーム)等を選択のうえ、OKを押下すると
以下のメッセージウィンドウが表示され、うまくいきません。

『ほかのユーザーによってファイルが開かれているため、変更したデザインを
保存したり、新しいデータベースオブジェクトに保存したりできません。
デザインの変更を保存したり、新しいオブジェクトに保存したりするには、
ファイルを排他モードにする必要があります』

 ちなみに「アプリA」は、セキュリティウィザード適用により自動生成された
ショートカットからのみ起動できるもの、「アプリB」はセキュリティは未設定の
ファイルです。

 このため「アプリA」は、ファイル-開く からモードを指定して開くことが
できない為、代わりにツール-オプションの詳細タブで、既定のモードを
「排他モード」に変更して試してみるものの、うまくいきません。

 どなたか助けていただきたく、よろしくお願いいたします。

以上

A 回答 (4件)

以前のご質問で回答した者です。


http://oshiete1.goo.ne.jp/qa5512019.html

> 「グループ(G)」レベルで見ると、管理者権限そのもの(即ち全ての
> 権限が付与されている状態)となっています。

この「全ての権限が付与されている状態」を確認されたのは、「新しい
フォーム」についてでしょうか、それとも全項目についてでしょうか。

こちらで確認したところ、新規フォームの作成(既存の別ファイルからの
インポートを含む)を行うには、そのデータベースを排他で開く権限が
必要でしたので、上での確認から漏れていないか確認してみて下さい。
(「ツール(T)→セキュリティ(T)→ユーザー/グループの権限(P)」で
 『ユーザー/グループの権限』ダイアログを開いたら、右側中段に
 ある『オブジェクトの種類(Y)』で「データベース」を選択し、
 左側にある『排他で開く(X)』のチェックをオンにします)

※こちらで確認した限りでは、『オブジェクトの種類(Y)』で「フォーム」を
  選択し、上方に表示される『オブジェクト名(O)』で「<新しいフォーム>」
  を選択したときの権限の設定に関係なく、上記の『排他で開く(X)』の
  設定によってのみ、新規フォームの作成可否が変化しました。
 (「<新しいフォーム>」での権限の設定は、新規作成フォームに対する
  権限の『既定値』を設定するためのもののようです)


なお、
> 「アプリA」は、ファイル-開く からモードを指定して開くことができない為、
とのことですが、上記ご質問の際にご紹介したように、セキュリティウィザード
で作成したMDWファイルを、既定のワークグループファイルに指定することも
できますので、既定のワークグループをそのMDWファイルに切り替えれば、
「排他モード」を指定して開くことも可能になります。


・・・ただ、前回のご質問での状況と照らし合わせると、Spacewatchさんの
PC内でのAccessが、どうもイレギュラーな状態を抱えてしまっているのでは
ないか、という気もしています。
というのは、そちらの環境ではショートカットから起動した場合と既定のワーク
グループに指定した場合とで、権限の反映のされ方が違うような挙動をして
いたと見受けられたためです。
(読み取り違えていたらすみません)

少なくとも、こちらで確認した範囲では、どちらの方法で起動した場合でも、
動作(新規作成/インポートの可否)は同じでした。
(なお、こちらでは、ユーザーグループに対してデータベースを開く権限を
 与えた上で、「排他で開く」の設定の切替を行って動作を確認しました:
 ユーザー個別に対しては、そちらと同様、一切権限を与えていません)

現在のMDWファイルによる権限設定は一旦全て解除した上で、Accessを
再インストールし、改めてセキュリティウィザードでMDWファイルを新規作成
した上で、新規MDWを既定のワークグループファイルに設定し、新規ファイル
に全オブジェクトをインポート、というのが、結果的に一番の近道になるかも
しれません(汗)
(こちらの環境で再現が取れないため、Access側の設定の問題なのか、
 システムがエラーを抱えているのか、の切り分けができないのが・・・(汗))


※「排他で開く」の権限を与えなかった場合のエラーメッセージの内容は、
  ご質問中に提示されたものと同じでした。念のため。

この回答への補足

DexMachinaさん

 前回に引き続き示唆に富んだ情報を有り難うございます。
 ご連絡が遅くなり申し訳けありません。
 実は、NO.2補足のあと、上記のご回答をいただくまでの間に、原因は不明
ながら、結果的に問題としての解決は、しておりました。しかしながら、上記の
視点での確認が取れなかった為、つまり、原因追求のため、今日まで時間を
要していました。
 順を追って説明します。

【1.問題解決(結果的に)の経緯】
 
 NO.2補足の後、そのままの状態でインポートすることをあきらめ、下記URL
     http://okwave.jp/qa/q2089787.html
を参考に、一旦セキュリティを解除し、その後インポートを行い、結果、
インポートすることができました。

 その意味では、上記でもご提案いただいている

> 現在のMDWファイルによる権限設定は一旦全て解除した上で、Accessを
> 再インストールし、改めてセキュリティウィザードでMDWファイルを新規作成
> した上で、新規MDWを既定のワークグループファイルに設定し、新規
> ファイルに全オブジェクトをインポート、というのが、結果的に一番の
> 近道になるかもしれません(汗)

のうち、「Accessを再インストールし」の部分のみを除いた手順を、すでに
実行し、とりあえずの問題は解決していた、ということになります。

【2.なぜインポートできなかったかの原因追求】

 上記ご回答をいただいた後、ご回答の中で、

> こちらで確認したところ、新規フォームの作成(既存の別ファイルからの
> インポートを含む)を行うには、そのデータベースを排他で開く権限が
> 必要でしたので、上での確認から漏れていないか確認してみて下さい。
> (「ツール(T)→セキュリティ(T)→ユーザー/グループの権限(P)」で
>  『ユーザー/グループの権限』ダイアログを開いたら、右側中段に
>  ある『オブジェクトの種類(Y)』で「データベース」を選択し、
>  左側にある『排他で開く(X)』のチェックをオンにします)

とある部分について、原因追求のために、確認を試みました。
 但し、上記1項で示しましたように、既にセキュリティを全て解除し、
再設定してしまった後でしたので、そのままでは確認できません。
 そこで、会社のサーバ管理者に依頼し、問題が発生した時点での
バックアップファイル(mdbおよびmdw)を再生してもらい、これを
再度開いて、設定を確認してみました。

 結果、残念ながら予想に反し、『排他で開く(X)』のチェックはオンでした。
 念のため、他の全てのオブジェクト(<新しい・・・>も含む)について
権限の設定を確認しましたが、全てのオブジェクトに対し、全ての権限が
オンでした。
 そして、この状態でインポートを実行すると、首尾良く取込が出来ました。
 一応、再生されたファイルの日時タグを確認したところ、問題発生時点の
ものに間違いはなさそう、つまり、バックアップファイルの再生は正しく
なされているようなのですが・・・・

【3.考察?】
 問題発生している状況のなかで、上記のセキュリティ設定が確認
できると良かったのですが、時間が経ってしまい、現象の再現が確認
できない状況となってしまいました。
 ひょっとすると、問題発生時に、なんらかのオペミス等で、一時的に
、『排他で開く(X)』チェックがオフになっていたとか、あるいはインポート作業を
実行していた時のログインユーザが管理者権限に設定されていなかった、
等(いずれも考えにくいのですが・・・・)、ということも残念ながら確認できない
現状です。
 ともあれ、問題発生時点のファイルが再生できたことで、原因追求のために
何か他にテストしてみる(あるいは確認してみる)べきことはありません
でしょうか?
 この点について、最後にコメントをいただければ幸いです。
 よろしくお願いします。

以上

補足日時:2010/03/12 15:44
    • good
    • 0

No.3です。



> 問題発生時点のファイルが再生できたことで、原因追求のために
> 何か他にテストしてみる(あるいは確認してみる)べきことはありません
> でしょうか?

復元したMDB及びMDWの組み合わせで

> そして、この状態でインポートを実行すると、首尾良く取込が出来ました。

とのこと、つまりご質問の状況が再現できなかった、ということですと、
やはり今回ご質問された現象は、ファイル側ではなくアプリケーション側が
何らかの問題を抱えていた、という推測が妥当な気がします(汗)
(現象が再現していれば確認事項もあるかもしれませんが(但し、今回の
 件では、再現していたとしても前回の回答以外の確認事項は
 思い浮かばないのですが(汗))、再現していない状況では確認自体が
 できないかと思います:
 やるとしたら「再現する条件の洗い出し」ですが、それは前回回答の
 「データベースに対する『排他の権限』の権限」がそのものですので・・・)

「Accessの設定等も変更していないし再インストールもしてないのに何故?」
と思われるかもしれませんが、ご使用のPCがMicrosoft Update(または
Windows Update)を実行されているようであれば、Accessに関連するパッチ
(私は詳しくはありませんが(汗)、恐らくDLLへの適用も含めて)が当てられた
際に、その不具合部分が上書きされた、という可能性も考えられます。
用語の参考:
http://e-words.jp/w/DLL.html

或いはもっと単純(?)に、OS起動時またはアプリケーション起動時に、
何らかのプログラムの読み込みでエラーが発生していて、それが再起動に
よって修復した、という可能性もなくはないかと・・・(汗)


・・・実のない回答で、すみません(汗)
    • good
    • 0
この回答へのお礼

 ありがとうございます。

 「今回の件では、再現していたとしても前回の回答以外の確認事項は
思い浮かばない」とのこと、了解致しました。
 やはり、新規フォームの作成(既存の別ファイルからのインポートを含む)
を行うには、、『オブジェクトの種類(Y)』で「フォーム」を 選択し、上方に表示
される『オブジェクト名(O)』で「<新しいフォーム>」 を選択したときの権限の
設定に関係なく、そのデータベースを排他で開く権限が必要、というところが
Accessの使い方の上では、ポイントと理解しました。
 
 今後、この点留意したいと思います。

 あと、Accessへのパッチがあたったかもしれない、プログラムのエラーが
再起動で修復したとのご指摘もありうる話かもしれません。
 この点につきましても、今後留意したいと思います。

 大変有り難うございまいました。

以上

お礼日時:2010/03/15 08:22

補足見させていただきました。


セキュリティウィザードは中々難しそうですね。
マイクロソフトでその単語で検索をかけると、やはり
結構つまずく方が多いようですね。

で、私も2000Verで作ったものコピーして、ウィザード
かけてみました。そしてツール-セキュリティ-ユーザー/グループの権限
の所で自分がアクセスしている名前の権限を管理者と同じ全ての
権限ありになるようチェックマークをつけてから
インポート-MDB選択-フォーム○○で行なったら
成功しました。

参考になれば幸いです。でもこれで駄目だと私のスキルでは
お力になれそうもないです。スミマセン。。。

この回答への補足

 早速の返信有り難うございます。
 
 すみませんが、
>そしてツール-セキュリティ-ユーザー/グループの権限
>の所で自分がアクセスしている名前の権限を管理者と同じ全ての
>権限ありになるようチェックマークをつけてから
の部分がよくわかりません。
 もう少し詳しく、操作を教えていただけないでしょうか?

 「自分がアクセスしている名前」とはどういう意味でしょうか?
 リストのラジオボタンを「グループ(G)」ではなく、あえて
「ユーザー(U)」にしておいて、全ての権限にチェックを入れる
ということでしょうか?

 ちなみに、当方のAccessバージョンは2003です。
 また、セキュリティ設定済の「アプリA」は、セキュリティウィザード
を適用していますので、自分自身は管理者グループに所属しており
「ユーザー(U)」レベルで見ると、一切の権限付与がありませんが、
「グループ(G)」レベルで見ると、管理者権限そのもの(即ち全ての
権限が付与されている状態)となっています。

以上

補足日時:2010/02/25 17:49
    • good
    • 0
この回答へのお礼

 NO.3へのお礼に示しましたように、問題そのものは、セキュリティの一旦
解除、そして再インポートにより解決しました。
 tag1701さんが上記で書かれているとおり、またNO.4へのお礼にも
書きました通り、(データベースそ開く権限も含めて)セキュリティの設定が
普通に実行されていれば、問題なくインポートできるはずであろうということが
理解できました。

 有り難うございました。
 
以上

お礼日時:2010/03/15 08:29

確認ですが、アプリBは閉じた状態で行って発生しているのでしょうか?


仮に空MDBを作って、同じくアプリBからインポート操作を
した場合はうまくいきますか?
また、アプリBを複製してそこからインポートしてもダメでしょうか?
メッセージを素直に読むとアプリBを開きながら操作を行っているように
推察されるのですが。。。

この回答への補足

 早速の回答有難うございます。
 言葉たらずだったようですので、あらためてご説明します。

> 確認ですが、アプリBは閉じた状態で行って発生しているのでしょうか?

 はい。閉じています。
 閉じた状態で行っているにもかかわらず、
『ほかのユーザーによってファイルが開かれているため・・・・』との
メッセージが出てしまう、ということなのです。

> 仮に空MDBを作って、同じくアプリBからインポート操作を
> した場合はうまくいきますか?

 はい。実はこれも既に試しています。
 具体的には、アプリAも、アプリBも閉じ、あらためてAccessを
立上げた後、空のMDBを作成(これを仮に「アプリC」と呼びます)
します。
 そして、「アプリC」にてファイル(F)-外部データの取り込み(G)-
インポート(I)を選択し、開いたインポートウィンドウから、「アプリB」
(閉じています)を指定し、オブジェクトのインポートウィンドウから、
取り込みたいオブジェクト(フォーム等)を選択のうえ、OKを押下すると
首尾良くそのオブジェクト(フォーム等)が取り込まれます。

> また、アプリBを複製してそこからインポートしてそこからインポート
> してもダメでしょうか?

 これは未だ試していませんでしたので、やってみましたが、やはり
ダメでした。
 具体的には、「アプリB」をエクスプローラで複製し、「アプリB_コピー」
を作成、この「アプリB_コピー」を閉じた状態で、「アプリA」から
インポートしようとしましたが、やはり同じメッセージが出てダメでした。
 ちなみに、同複製「アプリB_コピー」を先ほど作った「アプリC」から
インポートをしてみたところ、これはうまくいきました。

 うまく取り込める空のMDB(「アプリC」)と、取り込めない「アプリA」との
大きなちがいはセキュリティ設定の有/無なのですが、このあたりに何か
原因があるのでしょうか?

補足日時:2010/02/25 08:43
    • good
    • 0

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