1

Excel 2007で使用されるメモリに本当に制限はありませんか?

マイクロソフトの仕様によると、制限はありません

確認したいのですが失敗します

私のテスト環境は次のとおりです。Windows764ビット、4G RAM、使用中のメモリはあまりありません

これが私が試したことです、

大きな整数配列を作成します。これは1GRamしか使用できませんでした。FAIL-> PROMPT OOMエラー大きな文字列配列を作成し、1000の長さの文字列を挿入し、1.9GRamを使用します。失敗->文字列スペースからのプロンプト

ワークシートに100万*10列のデータを作成し、複製を続けます。1.9Gラムを使用します。FAIL->ランダムエラーを表示します。

私の質問は、メモリの制限が本当にないのか、それともPCの空きメモリをすべて使い果たしたのかということです。

4

2 に答える 2

1

Excelのメモリ制限はバージョンによって異なります。Excel 2007は、理論上2ギガバイトの仮想メモリに制限されていますが、実際には、メモリの断片化の問題などのために、実際にはそれほど多くを使用できません。一部については、 http://www.decisionmodels.com/memlimitsc.htmを参照してください。詳細。

于 2012-09-24T07:12:05.137 に答える
0

VBA で使用できるメモリの量を確認するには、以下のコードをコピーして貼り付けて呼び出します。availableMemoryInMB()

Function allocateMB(intNumMB As Integer) As Boolean
    On Error Resume Next
    Dim a As Variant
    ReDim a(intNumMB, 256, 256) As Variant 'intNumMB x 256 x 256 x 16 bytes = intNumMB MB
    allocateMB = (Err.Number = 0)
    Err.Clear
    Erase a
End Function

Function availableMemoryInMB() As Integer
    Dim intLow As Integer, intHigh As Integer, intTest As Integer
    intTest = 1: intHigh = 0
    Do
        If allocateMB(intTest) Then
            intLow = intTest
            If intHigh = 0 Then
                intTest = intTest * 2
            Else
                intTest = (intLow + intHigh) / 2
            End If
        Else
            intHigh = intTest
            intTest = (intLow + intHigh) / 2
        End If
    Loop Until intHigh - intLow <= 1 And intHigh > 0
    availableMemoryInMB = intLow
End Function

コードの実行には 2 ~ 20 秒かかります。64 ビットの Excel バージョンでは、VBA に数 GB のメモリを使用できますが、32 ビット バージョンの Excel では、約半分の GB を使用できます。

于 2017-06-28T12:34:54.387 に答える