プロが教えるわが家の防犯対策術!

現在Access2010を使用して開発しているのですが、ある一定以上の件数のクエリを実行すると、「応答なし」のまま長時間かかってしまいます。
原因はどうやらAccess2010がマルチコアCPUに対応していない為らしいのですが、そのことについてのMS側の公式発表文章はあるのでしょうか?探しても中々見つからず、困っています。(動作環境が悪いのか、それともAccess2010が本当にマルチコアCPU不対応なのか、何らかの証拠が欲しいです。)

このQ&Aに関連する最新のQ&A

A 回答 (4件)

この回答への補足

ありがとうございます。私も詳しいことはわからないのですが、今現在使用中のAccessのバージョンがこのパッチのバージョン以降のバージョンになってしまっているらしく、適用できなかったらしいのです。。。 ですが、確かにこの問題が当てはまりそうですね。。。

補足日時:2011/12/19 11:48
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/12/19 17:28

「CPU設定をシングルコアに切り替えた途端」というのが気になるんですが、仮想化されてるPCなんでしょうか?

この回答への補足

すみません、BIOSのCPU設定で切り替えができたので、そういった意味での切り替えです。

補足日時:2011/12/19 15:33
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/12/19 17:28

詳細はわからないのでなんとも言えませんが、今時シングルコアの方が少ないわけで、多くの企業がマルチコアCPUのPCを使って、Access2010を動かしています。

そんな基本的な障害がAccessにあるなんて聞いたことないです。ちょっと考えられないですね。

検証は簡単で同じaccdbファイルで、シングルコアだと問題がないなら可能性はあるかもですね。

ただまあ疑うならば、データベースの設計(キーやインデックス)かSQL、プログラム(VBAのADODB)あたりが先ではないでしょうか。

この回答への補足

すみません、同じaccdbファイルでシングルコアで実行してみた事を言ってなかったのですが、CPU設定をシングルコアに切り替えた途端、何度やってもクエリの結果がすぐに返ってきます。VBAからではなく、単にクエリを実行してみても同じ結果なので不思議です。。。

補足日時:2011/12/19 09:20
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/12/19 17:28

> ある一定以上の件数のクエリを実行すると、「応答なし」のまま長時間かかってしまいます。


Indexとか、CPU以外の要素である可能性は排除されてますか?

この回答への補足

それが、単に件数が多いだけで複雑なDB設計ではないのに今回の事象が起こりました。 また、シングルコアに切り替えた途端に正常な動作になるので、原因がCPUとしか思えません。。。

補足日時:2011/12/19 09:23
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2011/12/19 17:27

このQ&Aに関連する人気のQ&A

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

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q「応答なし」が頻繁に出る

PCの起動が遅く、起動しても動作が遅いと言うことで
お尋ねしたのですが、アドバイスに従い
いろいろ試みてみたのですが、やはり一向に問題が解消されず
困っています。
その後NTT西日本に問い合わせをしたところ
セキュリティソフトが故障していることがわかり
担当者の指導に従い、入れ替えを行いました。
その操作はうまくいったのですが、起動・動作が遅いのは変わりません。
PCを入れてもらった業者にメモリーを増やしてももらおうと思ったのですが
なぜか、それもうまくいきません。(追加するとPCが立ち上がらなくなる)

件名にも書きましたが
動作が遅く、ブラウザやメールの立ち上げの際、「応答なし」のメッセージが
頻繁に表れ、正常に動作するのがとても遅いです。
良策があったら、とてもうれしいです。
ご回答をよろしくお願いします。

Aベストアンサー

> スキャンしてみました
CrystalDiskInfoは情報を表示するだけでスキャンの機能はありませんが(と思います、スキャンしたことはないので)。
下記の「通常版」の「ポータブル(ZIP)」をダウンロードして解凍し、実行してみてください。
http://crystalmark.info/
下記の「使用方法」をご覧になって、エラー関係の項目を調べてみてください。
http://senryaku.sengoku-jidai.com/Freesoft/CrystalDiskInfo.html

> 1126ものエラーが検出され、修復する必要があると出ました
> お試し版付きの有料ソフトの購入ボダンがでて
別なソフトだと思います。
CrystalDiskInfoはその様な詐欺まがいのソフトではありませんので。
もちろんそのソフトを購入する必要はありません。

QAccessのRefresh・Requery・Repaintの違い

Requeryはもう一度ソースレコード(テーブル)を読み込むようです。このとき、テーブルの先頭レコードに移動してしまいます。
Refreshは最新のレコード(テーブル)を再表示するような気がします。レコードの移動は起こらない気がします。
Repaintは、VBAでキャプションなどを変更したとき使っています。
でも、よくわかっていません。
どんなときにどんなメソッドを使えばいいのでしょうか?
詳しい方、よろしくお願いいたします。

Aベストアンサー

たびたびすみません。
調べてたらこんなのがでてきました。
http://www.nurs.or.jp/~ppoy/access/access/acF007.html

参考URL:http://www.nurs.or.jp/~ppoy/access/access/acF007.html

QDoEvents関数って何?

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そこで「EXCEL VBA パーフェクトマスター」という本を見たら

for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
DoEvents
next i
unload userform1
と入力すれば解決することがわかりました。

しかし「DoEvents」についてあまり詳しく書いていなかったのでDoEvents関数をヘルプで見ると、
「発生したイベントがオペレーティング システムによって処理されるように、プログラムで占有していた制御をオペレーティング システムに渡すフロー制御関数です。」

と書いてあるのですが正直、書いてあることがよくわかりません。

どなたかDoEvents関数について、
もう少しわかりやすく教えていただけませんか。
それから、最初に書いたコードで実行すると
ユーザーフォームの背景が真っ白になってしまう原因も
教えていただけませんか?

よろしくお願いいたします。

こんにちは。

VBAやプログラミングに詳しい皆様に
教えていただきたい質問があります。

cells(1,1)からcells(5000,1)までの値を消去するときに
処理の進行状況を表示するためにuserform上にプログレスバーを表示したいと思います。

そこで下記のようなコードを入力しました。

userform1.show
for i =1 to 5000
cells(i,1)=""
userform1.progressbar1.value=i/5000*100
next i
unload userform1

しかしこれだとuserformの背景が真っ白になってしまい
ラベルの文字も消えてしまいます。
そ...続きを読む

Aベストアンサー

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
    DoEvents
    Cells(i,1) = ""
  Next i
End Sub

Private Sub CommandButton2_Click()
  MsgBox "hoge"
End Sub

っていうフォームのコードがあった場合、
DoEvents を入れることによって、ループ中にユーザーがCommandButton2 を押すことによって CommandButton2 のクリック イベントも動いちゃいます。
CommandButton1 のクリック イベントではループの前に
CommandButton1.Enabled = False
CommandButton2.Enabled = False
を書いてフォーム上の CommandButton を無効にしておき、ループが終わったら
CommandButton1.Enabled = True
CommandButton2.Enabled = True
と書いて CommandButton を有効に戻してください。

これを工夫すれば、CommandButton2 で CommandButton1 のループを途中キャンセルする処理もすることができます。

Private Canceled As Boolean

Private Sub CommandButton1_Click()

  CommandButton2.Enabled = False

  Dim i As Long
  For i = 1 To 50000
    DoEvents

    If Canceled = True Then
      MsgBox "キャンセルしました"
      Exit Sub
    End If

    Cells(i, 1).Value = ""
  Next i
End Sub

Private CommandButton2_Click()
  Canceled = True
End Sub



コードの行頭にあるスペースは見易さのために全角スペースで作成していますので、これをこのままコピペするとエラーになるかもしれません。
コピペするなら行頭の全角スペースを半角スペースに直してください。

簡単に言うと、
OS に制御を渡すってことです。(ヘルプそのまんま)
時間が掛かるループ処理などの場合、ループが終わるまで制御は独占されてしまいます。
ですのでループ中は OS や Excel そのものにも再描画をさせる暇さえ与えません。
途中に DoEvents を入れると制御が OS に渡るので、OS は溜まっていた処理をそこで行うことができます。
結果、フォームの再描画などが行われることになります。

注意点ですが、
Private Sub CommandButton1_Click()
  Dim i As Long

  For i = 1 To 50000
...続きを読む

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

QAccessの画面更新を一時的に停止する方法。

こんにちは。
Accessの画面更新を一時的に停止する方法を捜しています。
ExcelのScreenUpdatingと同様な機能です。

VBAでの更新処理時に画面がチラチラと動くのを防止したいと思っています。
(Ver:Access2000)
ご存知の方宜しくお願い致します。

Aベストアンサー

Application.Echo False '画面の描画を止める

・・・処理を実行する・・・

Application.Echo True '画面の描画を行う

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QSQLの速度をあげるには・・・

テキストファイルからキーワードを拾って
SQLをなげています
SQLの質問になってしまうかもしれません
いまはADO接続でやっています

Open ファイル as input......

SQL = select * from tbl where name like '%キーワード%'
execute(SQL)

レコードセットの値で処理をいろいろ・・・
Loop

もともとのDBの件数がものすごくおおくてselect文に結構な時間が
かかってしまいます。速度をあげるほうほうってあるのでしょうか
私にはおもいつかなくて・・・

こういったほうほうは どう? ってのがありましたら
おしえていただきたいのですが よろしくおねがいします。

Aベストアンサー

確かに・・・Like演算子・・・あまり使いたくないですね・・・
文字列比較は処理を遅くさせるし、増してや「=」ではなくLikeですから、膨大な時間がかかる恐れが・・・

ちなみにぼく自身、DB系を多くしています。今の仕事もDB系なのですが、元となるホストは他の会社が行っており、それにあわせて作らなければなりません。
で、そのホスト連携部分に文字列を比較しなければならない部分があるんですよ・・・・
自分の会社ならまだしも、他の会社がすでに設計済みのDBだから変えようがないのです。。。

まぁ愚痴っても仕方ないか・・・


なのでぼくも(不本意ながら)Like演算子を使用しています。


長い前置きはさておき・・・

本題のSQLのスピードなのですが、
http://homepage2.nifty.com/inform/vbdb/addnew.htm
こちらに面白い記述がありました。

AddNewにかかるスピードの検証で
Access データベースの場合: AddNew のほうが INSERT INTO より5倍以上速い
SQL Server の場合: INSERT INTO のほうが AddNew より 1.4倍 くらい速い
とあります。


たぶんで物を言ってはいけないと思うけど、言っちゃいます。

(1)もしDBがアクセスで
 >レコードセットの値で処理をいろいろ・・・
 のところがUpdate用のSQL文で処理を行ってる場合

 Recordsetをして、処理を行う


(2)もしDBがアクセス以外で
 >レコードセットの値で処理をいろいろ・・・
 のところがRecordsetで処理を行ってる場合

 Recordsetをせずに、UPDATE用のSQLを実行する


未検証なのですが多分イメージとして、こういうパターンが各DBに適してるのかな?

すでにこのパターンなのであれば、意味ないですね(^^;)

参考URL:http://homepage2.nifty.com/inform/vbdb/addnew.htm

確かに・・・Like演算子・・・あまり使いたくないですね・・・
文字列比較は処理を遅くさせるし、増してや「=」ではなくLikeですから、膨大な時間がかかる恐れが・・・

ちなみにぼく自身、DB系を多くしています。今の仕事もDB系なのですが、元となるホストは他の会社が行っており、それにあわせて作らなければなりません。
で、そのホスト連携部分に文字列を比較しなければならない部分があるんですよ・・・・
自分の会社ならまだしも、他の会社がすでに設計済みのDBだから変えようがないのです。。。

...続きを読む

QAccessのDAO.ExecuteとDoCmd.RunSqlの違いについて

アクションクエリを実行する際、表題の2つを検討しています。
最重要な違いに同期と非同期であることをネットで検索して分かりました。
非同期だとどのような問題が発生するのか具体的に教えて頂けると助かります><

Aベストアンサー

DoCmd.RunSQL ですが、「非同期」であると幾つかのHPで見かけましたが、実際試してみると「同期」実行している感じです(Access2000で実験)。

実際「非同期」なんでしょうか?
オフィシャルなサイトに「非同期である」と言う記述はありますか?

------------検証プログラム------------
Sub local_test()
 Dim SQL(4) As String
 Dim t As Double

 SQL(1) = "UPDATE T1 SET Data = '0';"
 SQL(2) = "UPDATE T1 SET Data = '1';"
 
 SQL(3) = "UPDATE T2 SET Data = '0';"
 SQL(4) = "UPDATE T2 SET Data = '1';"
 
 '初期化
 CurrentDb.Execute SQL(1)
 CurrentDb.Execute SQL(3)

 'DoCmd.RunSQL テスト--------------------------------------------
 DoCmd.SetWarnings False
 t = Timer()
 DoCmd.RunSQL SQL(2)
 Debug.Print "DoCmd.RunSQL " & Format(Timer() - t, "0.00000")
 DoCmd.SetWarnings True

 'DAO.Execute テスト--------------------------------------------
 t = Timer()
 CurrentDb.Execute SQL(4)
 Debug.Print "CurrentDb.Execute " & Format(Timer() - t, "0.00000")
End Sub
---------------------------------------------------------

T1 T2 とも、3万件程度のテストデータが入っています。
DoCmd.RunSQL の方も処理が終わるまで返ってきません(同期実行では?)

DoCmd.RunSQL は SetWarnings を設定しないと、確認メッセージが出でます。
DoCmd.RunSQL が同期実行だとすると、これ以外に大きな違いは無いのかも知れませんね。


##########################################################
今度はADOを使って無理やり非同期実験
別のmdbにファイルにADOでアクセスしています。

------------検証プログラム------------
Sub ado_test()
 Dim cnn(2) As New ADODB.Connection
 Dim SQL(6) As String
 Dim dbName As String
 Dim t As Double

 dbName = "c:\temp\db1.mdb"

 SQL(1) = "UPDATE T1 SET Data = '0';"
 SQL(2) = "UPDATE T1 SET Data = '1';"
 SQL(3) = "UPDATE T1 SET Data = '2' WHERE Data = '1';"
 
 SQL(4) = "UPDATE T2 SET Data = '0';"
 SQL(5) = "UPDATE T2 SET Data = '1';"
 SQL(6) = "UPDATE T2 SET Data = '2' WHERE Data = '1';"
 
 cnn(1).Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbName & ";"
 cnn(2).Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbName & ";"
 
'初期化
 cnn(1).Execute SQL(1)
 cnn(1).Execute SQL(4)

'同期実行テスト--------------------------------------------
 t = Timer()
 cnn(1).Execute SQL(2)
 cnn(1).Execute SQL(3)
 Debug.Print "同期実行  " & Format(Timer() - t, "0.00000")

'非同期実行テスト--------------------------------------------
 
 t = Timer()
 cnn(1).Execute SQL(5), , adAsyncExecute
 cnn(2).Execute SQL(6), , adAsyncExecute
 Debug.Print "非同期実行 " & Format(Timer() - t, "0.00000")
End Sub
---------------------------------------------------------
非同期の方が明らかに速いです。(処理を待たずに返ってくるので)
非同期の方は正しく更新できてません。

この検証プログラムが正しいのか?、あまり自信はありません(^^;
参考程度にして下さい。

##########################################################
補足
DAOかADOか?

http://www.naboki.net/access/heaven/heaven_14.html
http://homepage2.nifty.com/inform/vbdb/daoado.htm

DoCmd.RunSQL ですが、「非同期」であると幾つかのHPで見かけましたが、実際試してみると「同期」実行している感じです(Access2000で実験)。

実際「非同期」なんでしょうか?
オフィシャルなサイトに「非同期である」と言う記述はありますか?

------------検証プログラム------------
Sub local_test()
 Dim SQL(4) As String
 Dim t As Double

 SQL(1) = "UPDATE T1 SET Data = '0';"
 SQL(2) = "UPDATE T1 SET Data = '1';"
 
 SQL(3) = "UPDATE T2 SET Data = '0';"
 SQL(4) = "UPD...続きを読む

QAccessでテーブル名やクエリ名一覧の抜き出し

Accessでテーブルやクエリを沢山(100個以上?)使っております。

そこで、テーブル名やクエリ名の管理をしたいので、テーブル名(クエリ名)の一覧を抜き出したいのですが、どうすればいいのでしょうか?
または、そういうことは無理なのでしょうか??(;O;)

1個づつコピーペーストでテールブル名をエクセルに貼り付けて行こうかな?と思ったのですが、さすがに数が多すぎるので困っております。

できるだけ簡単な方法がいいのですが、もしなければVBAでもいいです。

おわかりの方がいらっしゃいましたら、よろしくお願いします。

Aベストアンサー

・クエリを新規作成
・以下SQLを貼り付け
SELECT MSysObjects.Type, MSysObjects.Name, MSysObjects.Flags
FROM MSysObjects
ORDER BY MSysObjects.Type, MSysObjects.Name;
・デザインビューで表示
あとは、TypeとFlagsの条件を変えてあげれば一覧できます。

QAccess 2010動きが遅い

先日下記の質問をさせて頂きました。

http://oshiete.goo.ne.jp/qa/7952942.html

色々試しました。
Office2010が入っているWin7 Pro、でAdminユーザーを2つ作り(AとB)試しました。
AではAccessのレスポンス、動きが遅く、Bでは問題ないスピードで動きました。

友人がVBA7.0が怪しいと言ってくれたため、確認していくとレジストリHKey_CURRENT_User\Software\Microsoft\VBA\7.0\Commonのキーが違います。CltShowSelect, Dock, DsnShowSelected, FolderView, MainWindow, MdiMaximized, OBGroupMem.., PropertiesWind.., Tool, UIAccessだけのものの動きは非常に遅い(A)。
上記にAlignToGrid, AutoQuickTip2, AutoStatement2, AutoValueTips2, BackGroundCompile, backGraundProjectLoad, CollapseWindow, CompileOnDemand, DragDropInEditor, EndProcLine, FontCharSet, FontFace, FontHeight, GridHeight, GridWidth, RequireDeclaration, SaveBeforeRun, ShowGrid, ShowToolTips, UpgradeVBX(添付データ参照)が入っているものは問題なく動きます(B)。

いくつもAdminユーザーを作って試しましたが、動くものと動かないものができます。動かないもののレジストリキーを消して動かしていると再びCltShowSelect, Dock, DsnShowSelected, FolderView, MainWindow, MdiMaximized, OBGroupMem.., PropertiesWind.., Tool, UIAccessだけのものになり、動いたものは消しても元にもどります。
同じPCをですので入っているソフトウェアは同じです。なぜこのような事が起きるのでしょうか。どなたが経験者はいらっしゃいませんか。また動くレジストリに変更出来る方法はありますでしょうか。

先日下記の質問をさせて頂きました。

http://oshiete.goo.ne.jp/qa/7952942.html

色々試しました。
Office2010が入っているWin7 Pro、でAdminユーザーを2つ作り(AとB)試しました。
AではAccessのレスポンス、動きが遅く、Bでは問題ないスピードで動きました。

友人がVBA7.0が怪しいと言ってくれたため、確認していくとレジストリHKey_CURRENT_User\Software\Microsoft\VBA\7.0\Commonのキーが違います。CltShowSelect, Dock, DsnShowSelected, FolderView, MainWindow, MdiMaximized, OBGroupMem.., Properti...続きを読む

Aベストアンサー

新規ユーザーを作って試してみました。

Access(Office)を一回も開いていない状態
HKEY_CURRENT_USER\Software\Microsoft 下にVBA というキーは無し

Access を立ち上げてテーブルを一個だけ作成
HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\Common まで出来て中味は↓だけ
名前 種類データ
(既定)REZ_SZ (値の設定なし)
Access閉じても変化なし

Access立ち上げて標準モジュールに MsgBox "" だけのSub Module作成
実行しても変化なし
Access終了後
(既定)、CtlsShowSelected、Dock、DsnShowSelected、FolderView、MainWindow
MdiMaximized、OGGroupMembers、PropertiesWindow、Tool、UIAccess
に増える。
(多分、モジュールの保存時に出来るものと思われるが確認漏れ)

Access立ち上げてVBEのツール→オプションで、『自動構文チェック』のチェックだけ
外す。直後に
(既定)、「AlignToGrid」、「AutoQuickTips2」、「AutoStatement2」、「AutoValueTips2」、
「BackGroundCompile」、「BackgroundProjectLoad」、「CollapseWindows」、「CompileOnDemand」、
CtlsShowSelected、Dock、「DragDropInEditor」、DsnShowSelected、「EndProcLine」、
FolderView、「GridHeight」、「GridWidth」、MainWindow、MdiMaximized、OGGroupMembers、
PropertiesWindow、「SaveBeforeRun」、「ShowGrid」、「ShowToolTips」、
「SyntaxChecking」、Tool、UIAccess、「UpgradeVBX」
に増える。(「」内は増えた分)
Accessを再起動しても名前をその数には変化なし。

なお、本番環境だともう少し設定を変えてあるので36個ありました。
(既定)、AutoValueTips2、AutoQuickTips2、AutoStatement2、DragDropInEditor
RequireDeclaration、EndProcLine、CompileOnDemand、BackGroundCompile
FontHeight、FontCharSet、FontFace、GridWidth
GridHeight、ShowGrid、AlignToGrid、SaveBeforeRun
ShowToolTips、CollapseWindows、UpgradeVBX、BackgroundProjectLoad
PropertiesWindow、MainWindow、MdiMaximized、Dock
FolderView、Tool、CtlsShowSelected、DsnShowSelected
UIAccess、OBGroupMembers、UI、SyntaxChecking
CodeForeColors、CodeBackColors、OBSearchHeight

数の多寡は関係ないような気がします。。。
(根拠はまったくありません)
何もしないのに数がちょこまかと増減したらマズイとは思いますけど。
それにしても解せない。
同一PC内でアカウントによって変わるなんて?
もしかして、アカウント名に日本語(全角文字)使ってるとか。
ミスリードが怖いので、少し回答を控えます。
明日は我が身かもしれないので、進展(解決)ありましたら教えてください。

最後に残念な苦言です。
困っていらっしゃるのは良く分かるのですが、
マルチポストは如何なものかと。
せめて、ここと、あそこと、あっちに同じ質問を立てています、
のようにしてください。
↓をご一読ください!
http://stakasaki.at.webry.info/200512/article_3.html

新規ユーザーを作って試してみました。

Access(Office)を一回も開いていない状態
HKEY_CURRENT_USER\Software\Microsoft 下にVBA というキーは無し

Access を立ち上げてテーブルを一個だけ作成
HKEY_CURRENT_USER\Software\Microsoft\VBA\7.0\Common まで出来て中味は↓だけ
名前 種類データ
(既定)REZ_SZ (値の設定なし)
Access閉じても変化なし

Access立ち上げて標準モジュールに MsgBox "" だけのSub Module作成
実行しても変化なし
Access終了後
(既定)、CtlsShowSelected、Dock、DsnShowSelected、...続きを読む


人気Q&Aランキング