カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Accessで発生するメモリー不足エラー

Accessで「メモリー不足です」という正体不明のエラーが出て困っています。
使用環境はWindows10 Pro 64bit、Access2016・2013です。

これまでも平常通り行ってきた業務をしていたら、上記のように「メモリー不足です」というエラーが発生し、データ元のAccessファイルが壊れてしまうという現象が発生しました。
原因としては多々あるようですが、原因の1つとして分かったことがあったので共有させていただければと思います。

原因の究明

まず、エラーが出るPCと出ないPCがあること。
出るPCと出ないPCの差を見つける。

発見した原因

積んでいるメモリーの差
エラーが出るPC、出ないPCの差を見たところ、OSはどちらもWindows10 Pro 64bit、CPU等も特に目立った違いがない。
記事の最後にリンクを貼っているMicrosoftのページにあるレジストリの値も全て同じ設定でした。
その他で唯一違ったのが積んでいるメモリー容量で32GBと16GBでした。

エラー解消…ではない

先ほど見つけたのがメモリーの違いということで、エラーが発生するPCの32GBのメモリーを16GBに変更しました。
すると明らかにエラーの発生する頻度が激減!

ただし、激減なので全く出なくなったわけではありません。
完全に解消したいとことなのですが、エラーが出ないPCもあるため、原因の究明はかなり難しいものと思われます。

下記URLも参考にさせて頂いたので、同じように悩まれている方がいらっしゃれば参考にしていただければ幸いです。

参考URL:
Access2010およびAccess2019で謎にエラー、「メモリ不足」でクエリー停止、ちょっとだけ解決
Access でメモリ不足エラーが発生する現象の対処策について

4,652 views

令和対応について Windows 10

元号が『令和』に変わりましたね。
知人の不動産業者さんから、Excelで令和表示に対応したいけど、どうすればいいの?
と質問がありましたので、こちらでもその方法をご紹介したいと思います。

例としてExcelでA1のセルに「=TODAY()」と入力して本日の日付を表示させてみましょう。
すると以下のように『平成』で表示されてしまいます。

これを自動で『令和』なるようにしましょう。

スタート(Windowsマーク)から設定をクリックします。

続きを読む…»

830 views

Outlookで検索が出来なくなったとき

Outlook2013でアーカイブした個人用PSTからメールが検索出来ないという事例がありました。

インデックスを再作成してみましたが、復活しないので復旧作業を行いました。

Outlook 個人用フォルダー ファイル (.pst) を修復する方法
こちらのページで「受信トレイ修復ツールを自動で起動する」をクリックし詳細を表示させます。
「Microsoft Outlook 2013 以降の受信トレイ修復ツールを起動する」というリンクをクリックすると、「microsofteasyfix20101.mini.diagcab」というファイルがダウンロードされます。

これ(簡易修復ツール)を実行することで受信トレイ修復ツールが起動します。
起動したら参照ボタンで修復したいPSTファイルを選択し[開始]をクリックして修復します。

2,699 views

CSVエクスポートでのテキストデータのNull値について ACCESS

AccessでCSVをエクスポートする際、テキスト型のフィールドがNullだった場合、
「,””,」とならず「,,」となってしまいます。
※前後にフィールドがあるとしています。

他のソフトやプログラムで該当ファイルを使用するときに、ダブルクォーテーション「”」が
必要な場合があります。

そういう時はNz関数を使います。
Nz関数はNullを別の文字列に置き換えしてれくる関数です。

データがNullだった場合、「,””,」という結果にするためには、Nullを長さゼロの文字列に置き換えます。

Nz([フィールド名],"")

もちろん、指定したフィールドのデータがNullでない場合はそのデータを返します。

14,434 views

複数のテーブルを一括で削除

Microsoft Accessにて、名前を指定して1つのテーブルを削除するだけであれば
DeleteObjectで削除することができます。

しかし、例えば任意の文字列が名前に含まれるテーブルを削除することができません。
その場合は以下のような方法で削除します。

例としてインポートでエラーが発生した際に作成されたエラーのテーブルを全て削除してみます。

Dim tbls As Object 'DAO.TableDefs
Dim tbl  As Object 'DAO.TableDef

'テーブル一覧取得
Set tbls = CurrentDb.TableDefs

Dim DelTables As Collection

Set DelTables = New Collection

For Each tbl In tbls

    If tbl.NAME Like "*インポート*エラー" Then
        DelTables.Add tbl.NAME
    End If

Next

For i = 1 To DelTables.Count
    'テーブル削除
    tbls.Delete (DelTables(i))
Next
14,668 views