- ベストアンサー
Accessのオブジェクトがインポートできません
Accessで作成中のアプリケーションに、他の作成済みAccessアプリから、 流用したいオブジェクトをインポートしようとするのですが、うまくいきません。 具体的には、作成中のAccessアプリ(以下「アプリA」と表記します)にて、 ファイル(F)-外部データの取り込み(G)-インポート(I)を選択し、 開いたインポートウィンドウから、作成済みのAccessアプリ(以下「アプリB」 と表記します)を指定し、オブジェクトのインポートウィンドウから、 取り込みたいオブジェクト(フォーム)等を選択のうえ、OKを押下すると 以下のメッセージウィンドウが表示され、うまくいきません。 『ほかのユーザーによってファイルが開かれているため、変更したデザインを 保存したり、新しいデータベースオブジェクトに保存したりできません。 デザインの変更を保存したり、新しいオブジェクトに保存したりするには、 ファイルを排他モードにする必要があります』 ちなみに「アプリA」は、セキュリティウィザード適用により自動生成された ショートカットからのみ起動できるもの、「アプリB」はセキュリティは未設定の ファイルです。 このため「アプリ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側の設定の問題なのか、 システムがエラーを抱えているのか、の切り分けができないのが・・・(汗)) ※「排他で開く」の権限を与えなかった場合のエラーメッセージの内容は、 ご質問中に提示されたものと同じでした。念のため。
その他の回答 (3)
- DexMachina
- ベストアンサー率73% (1287/1744)
No.3です。 > 問題発生時点のファイルが再生できたことで、原因追求のために > 何か他にテストしてみる(あるいは確認してみる)べきことはありません > でしょうか? 復元したMDB及びMDWの組み合わせで > そして、この状態でインポートを実行すると、首尾良く取込が出来ました。 とのこと、つまりご質問の状況が再現できなかった、ということですと、 やはり今回ご質問された現象は、ファイル側ではなくアプリケーション側が 何らかの問題を抱えていた、という推測が妥当な気がします(汗) (現象が再現していれば確認事項もあるかもしれませんが(但し、今回の 件では、再現していたとしても前回の回答以外の確認事項は 思い浮かばないのですが(汗))、再現していない状況では確認自体が できないかと思います: やるとしたら「再現する条件の洗い出し」ですが、それは前回回答の 「データベースに対する『排他の権限』の権限」がそのものですので・・・) 「Accessの設定等も変更していないし再インストールもしてないのに何故?」 と思われるかもしれませんが、ご使用のPCがMicrosoft Update(または Windows Update)を実行されているようであれば、Accessに関連するパッチ (私は詳しくはありませんが(汗)、恐らくDLLへの適用も含めて)が当てられた 際に、その不具合部分が上書きされた、という可能性も考えられます。 用語の参考: http://e-words.jp/w/DLL.html 或いはもっと単純(?)に、OS起動時またはアプリケーション起動時に、 何らかのプログラムの読み込みでエラーが発生していて、それが再起動に よって修復した、という可能性もなくはないかと・・・(汗) ・・・実のない回答で、すみません(汗)
お礼
ありがとうございます。 「今回の件では、再現していたとしても前回の回答以外の確認事項は 思い浮かばない」とのこと、了解致しました。 やはり、新規フォームの作成(既存の別ファイルからのインポートを含む) を行うには、、『オブジェクトの種類(Y)』で「フォーム」を 選択し、上方に表示 される『オブジェクト名(O)』で「<新しいフォーム>」 を選択したときの権限の 設定に関係なく、そのデータベースを排他で開く権限が必要、というところが Accessの使い方の上では、ポイントと理解しました。 今後、この点留意したいと思います。 あと、Accessへのパッチがあたったかもしれない、プログラムのエラーが 再起動で修復したとのご指摘もありうる話かもしれません。 この点につきましても、今後留意したいと思います。 大変有り難うございまいました。 以上
- tag1701
- ベストアンサー率54% (67/123)
補足見させていただきました。 セキュリティウィザードは中々難しそうですね。 マイクロソフトでその単語で検索をかけると、やはり 結構つまずく方が多いようですね。 で、私も2000Verで作ったものコピーして、ウィザード かけてみました。そしてツール-セキュリティ-ユーザー/グループの権限 の所で自分がアクセスしている名前の権限を管理者と同じ全ての 権限ありになるようチェックマークをつけてから インポート-MDB選択-フォーム○○で行なったら 成功しました。 参考になれば幸いです。でもこれで駄目だと私のスキルでは お力になれそうもないです。スミマセン。。。
お礼
NO.3へのお礼に示しましたように、問題そのものは、セキュリティの一旦 解除、そして再インポートにより解決しました。 tag1701さんが上記で書かれているとおり、またNO.4へのお礼にも 書きました通り、(データベースそ開く権限も含めて)セキュリティの設定が 普通に実行されていれば、問題なくインポートできるはずであろうということが 理解できました。 有り難うございました。 以上
補足
早速の返信有り難うございます。 すみませんが、 >そしてツール-セキュリティ-ユーザー/グループの権限 >の所で自分がアクセスしている名前の権限を管理者と同じ全ての >権限ありになるようチェックマークをつけてから の部分がよくわかりません。 もう少し詳しく、操作を教えていただけないでしょうか? 「自分がアクセスしている名前」とはどういう意味でしょうか? リストのラジオボタンを「グループ(G)」ではなく、あえて 「ユーザー(U)」にしておいて、全ての権限にチェックを入れる ということでしょうか? ちなみに、当方のAccessバージョンは2003です。 また、セキュリティ設定済の「アプリA」は、セキュリティウィザード を適用していますので、自分自身は管理者グループに所属しており 「ユーザー(U)」レベルで見ると、一切の権限付与がありませんが、 「グループ(G)」レベルで見ると、管理者権限そのもの(即ち全ての 権限が付与されている状態)となっています。 以上
- tag1701
- ベストアンサー率54% (67/123)
確認ですが、アプリ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」との 大きなちがいはセキュリティ設定の有/無なのですが、このあたりに何か 原因があるのでしょうか?
補足
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)』チェックがオフになっていたとか、あるいはインポート作業を 実行していた時のログインユーザが管理者権限に設定されていなかった、 等(いずれも考えにくいのですが・・・・)、ということも残念ながら確認できない 現状です。 ともあれ、問題発生時点のファイルが再生できたことで、原因追求のために 何か他にテストしてみる(あるいは確認してみる)べきことはありません でしょうか? この点について、最後にコメントをいただければ幸いです。 よろしくお願いします。 以上